[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [PATCH for-5.2 5/6] pc-bios/s390-ccw: Scan through all boot devices
From: |
Thomas Huth |
Subject: |
Re: [PATCH for-5.2 5/6] pc-bios/s390-ccw: Scan through all boot devices if none has been specified |
Date: |
Wed, 5 Aug 2020 11:39:54 +0200 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:60.0) Gecko/20100101 Thunderbird/60.9.0 |
On 05/08/2020 11.36, Cornelia Huck wrote:
> On Tue, 28 Jul 2020 20:37:33 +0200
> Thomas Huth <thuth@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 <thuth@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.
Yes, I noticed that, too ... but yes, one clean-up step at a time. I've
put it on my todo-list for later.
>>
>> panic("Failed to load OS from hard disk\n");
>> return 0; /* make compiler happy */
>
> Reviewed-by: Cornelia Huck <cohuck@redhat.com>
Thanks!
Thomas