On Tue, 28 Jul 2020 20:37:33 +0200 Thomas Huth <th...@redhat.com> wrote:
> If no boot device has been specified (via "bootindex=..."), the s390-ccw > bios scans through all devices to find a bootable device. But so far, it > stops at the very first block device (including virtio-scsi controllers > without attached devices) that it finds, no matter whether it is bootable > or not. That leads to some weird situatation where it is e.g. possible > to boot via: > > qemu-system-s390x -hda /path/to/disk.qcow2 > > but not if there is e.g. a virtio-scsi controller specified before: > > qemu-system-s390x -device virtio-scsi -hda /path/to/disk.qcow2 > > While using "bootindex=..." is clearly the preferred way of booting > on s390x, we still can make the life for the users at least a little > bit easier if we look at all available devices to find a bootable one. > > Buglink: https://bugzilla.redhat.com/show_bug.cgi?id=1846975 > Signed-off-by: Thomas Huth <th...@redhat.com> > --- > pc-bios/s390-ccw/main.c | 46 +++++++++++++++++++++++++++-------------- > 1 file changed, 31 insertions(+), 15 deletions(-) (...) > int main(void) > { > sclp_setup(); > css_setup(); > boot_setup(); > - find_boot_device(); > - enable_subchannel(blk_schid); > - ipl_boot_device(); > + if (have_iplb) { > + find_boot_device(); > + enable_subchannel(blk_schid); > + ipl_boot_device(); > + } else { > + probe_boot_device(); > + } The one thing that's a bit surprising with the code is that enable_subchannel() sticking out now. The code looking for a boot device does that for all subchannels it looks at... but I think find_boot_device() did that for specified devices already as well, so it seems redundant? Anyway, that's something that can be looked at later. > > panic("Failed to load OS from hard disk\n"); > return 0; /* make compiler happy */ Reviewed-by: Cornelia Huck <coh...@redhat.com>