[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[Qemu-devel] [PULL for-2.5 09/15] pc-bios/s390-ccw: El Torito s390x boot
From: |
Cornelia Huck |
Subject: |
[Qemu-devel] [PULL for-2.5 09/15] pc-bios/s390-ccw: El Torito s390x boot entry check |
Date: |
Wed, 11 Nov 2015 18:56:27 +0100 |
From: Maxim Samoylov <address@hidden>
Boot entry is considered compatible if boot image is Linux kernel
with matching S390 Linux magic string.
Empty boot images with sector_count == 0 are considered broken.
Signed-off-by: Maxim Samoylov <address@hidden>
Reviewed-by: David Hildenbrand <address@hidden>
Signed-off-by: Cornelia Huck <address@hidden>
---
pc-bios/s390-ccw/bootmap.c | 11 ++++++++++-
pc-bios/s390-ccw/bootmap.h | 8 ++++++++
2 files changed, 18 insertions(+), 1 deletion(-)
diff --git a/pc-bios/s390-ccw/bootmap.c b/pc-bios/s390-ccw/bootmap.c
index 7c8dce1..82cca9c 100644
--- a/pc-bios/s390-ccw/bootmap.c
+++ b/pc-bios/s390-ccw/bootmap.c
@@ -450,7 +450,16 @@ static void ipl_scsi(void)
static bool is_iso_bc_entry_compatible(IsoBcSection *s)
{
- return true;
+ uint8_t *magic_sec = (uint8_t *)(sec + ISO_SECTOR_SIZE);
+
+ if (s->unused || !s->sector_count) {
+ return false;
+ }
+ read_iso_sector(bswap32(s->load_rba), magic_sec,
+ "Failed to read image sector 0");
+
+ /* Checking bytes 8 - 32 for S390 Linux magic */
+ return !_memcmp(magic_sec + 8, linux_s390_magic, 24);
}
static void load_iso_bc_entry(IsoBcSection *load)
diff --git a/pc-bios/s390-ccw/bootmap.h b/pc-bios/s390-ccw/bootmap.h
index 4f6f767..cc77fd7 100644
--- a/pc-bios/s390-ccw/bootmap.h
+++ b/pc-bios/s390-ccw/bootmap.h
@@ -495,6 +495,14 @@ typedef struct IsoBcHdr {
uint8_t id[28];
} __attribute__((packed)) IsoBcHdr;
+/*
+ * Match two CCWs located after PSW and eight filler bytes.
+ * From libmagic and arch/s390/kernel/head.S.
+ */
+const uint8_t linux_s390_magic[] = "\x02\x00\x00\x18\x60\x00\x00\x50\x02\x00"
+ "\x00\x68\x60\x00\x00\x50\x40\x40\x40\x40"
+ "\x40\x40\x40\x40";
+
typedef struct IsoBcEntry {
uint8_t id;
union {
--
2.6.3
- [Qemu-devel] [PULL for-2.5 00/15] s390x patches for 2.5, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 01/15] s390x/css: sense data endianness, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 04/15] MAINTAINERS: update virtio-ccw/s390 git tree, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 02/15] s390x/pci : fix up s390 pci iommu translation function, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 06/15] s390x/kvm: don't enable CMMA when hugetlbfs will be used, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 03/15] MAINTAINERS: update s390 file patterns, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 05/15] s390x: switch to memory_region_allocate_system_memory, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 08/15] pc-bios/s390-ccw: ISO-9660 El Torito boot implementation, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 07/15] pc-bios/s390-ccw: Always adjust virtio sector count, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 10/15] pc-bios/s390-ccw: El Torito 16-bit boot image size field workaround, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 09/15] pc-bios/s390-ccw: El Torito s390x boot entry check,
Cornelia Huck <=
- [Qemu-devel] [PULL for-2.5 14/15] s390x/ipl: switch error reporting to error_setg, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 13/15] s390x/ipl: clean up qom definitions and turn into TYPE_DEVICE, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 12/15] qdev: provide qdev_reset_all_fn(), Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 11/15] pc-bios/s390-ccw: rebuild image, Cornelia Huck, 2015/11/11
- [Qemu-devel] [PULL for-2.5 15/15] s390: deprecate the non-ccw machine in 2.5, Cornelia Huck, 2015/11/11
- Re: [Qemu-devel] [PULL for-2.5 00/15] s390x patches for 2.5, Peter Maydell, 2015/11/11