mirror of
https://github.com/Motorhead1991/qemu.git
synced 2025-08-11 03:24:58 -06:00
pc-bios/s390-ccw: El Torito s390x boot entry check
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 <max7255@linux.vnet.ibm.com> Reviewed-by: David Hildenbrand <dahi@linux.vnet.ibm.com> Signed-off-by: Cornelia Huck <cornelia.huck@de.ibm.com>
This commit is contained in:
parent
866cac91e0
commit
ba21f0cca8
2 changed files with 18 additions and 1 deletions
|
@ -450,7 +450,16 @@ static void ipl_scsi(void)
|
||||||
|
|
||||||
static bool is_iso_bc_entry_compatible(IsoBcSection *s)
|
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)
|
static void load_iso_bc_entry(IsoBcSection *load)
|
||||||
|
|
|
@ -495,6 +495,14 @@ typedef struct IsoBcHdr {
|
||||||
uint8_t id[28];
|
uint8_t id[28];
|
||||||
} __attribute__((packed)) IsoBcHdr;
|
} __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 {
|
typedef struct IsoBcEntry {
|
||||||
uint8_t id;
|
uint8_t id;
|
||||||
union {
|
union {
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue