From: Thomas Huth <thuth@redhat.com>
To: Jared Rossi <jrossi@linux.ibm.com>, qemu-s390x@nongnu.org
Cc: frankja@linux.ibm.com, Sebastian Mitterle <smitterl@redhat.com>,
qemu-devel@nongnu.org
Subject: Re: [PATCH v5 00/19] s390x: Add Full Boot Order Support
Date: Fri, 8 Nov 2024 15:37:03 +0100 [thread overview]
Message-ID: <592e9413-f2cf-4e84-b594-4017ca8d60e1@redhat.com> (raw)
In-Reply-To: <af01b629-7df1-4f55-9b18-3f3bc1d393c9@linux.ibm.com>
On 07/11/2024 21.42, Jared Rossi wrote:
>
>
> On 11/6/24 6:10 AM, Thomas Huth wrote:
>> On 05/11/2024 17.42, Jared Rossi wrote:
>>> Hi Thomas, Sebastian,
>>>
>>> It looks like this is simply caused by the "is_cdrom" value only ever
>>> being set
>>> to true. I think it is a one-line fix that just makes sure to initialize
>>> the
>>> value to false each time we try a new device:
>>>
>>> diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
>>> index a4d1c05aac..3fdba0bedc 100644
>>> --- a/pc-bios/s390-ccw/main.c
>>> +++ b/pc-bios/s390-ccw/main.c
>>> @@ -214,6 +214,7 @@ static void boot_setup(void)
>>> static bool find_boot_device(void)
>>> {
>>> VDev *vdev = virtio_get_device();
>>> + vdev->is_cdrom = false;
>>> bool found = false;
>>>
>>> switch (iplb.pbt) {
>>>
>>> I tested it with the two scenarios you mention and with the existing qtests,
>>> and it seems to work correctly now.
>>
>> Agreed, this seems to fix the issue when all devices are properly marked
>> with bootindex properties. But it still persists in case the BIOS has to
>> scan for the boot device, e.g.:
>>
>> qemu-system-s390x -accel kvm -m 2G -nographic \
>> -drive if=none,id=d1,file=/tmp/bad.dat,format=raw,media=cdrom \
>> -device virtio-scsi -device scsi-cd,drive=d1 \
>> -drive if=none,id=d2,file=good.qcow2 -device virtio-blk,drive=d2
>>
>> Isn't there a better place to set the is_cdrom variable?
>>
>> Thomas
>>
>
> Hi Thomas,
>
> What I found is that the original issue with clearing the "is_cdrom" value is
> just as easily fixed for both indexed devices and probed devices by moving
> where "is_cdrom" is set to false:
>
> diff --git a/pc-bios/s390-ccw/main.c b/pc-bios/s390-ccw/main.c
> index a4d1c05aac..7509755e36 100644
> --- a/pc-bios/s390-ccw/main.c
> +++ b/pc-bios/s390-ccw/main.c
> @@ -242,6 +242,7 @@ static bool find_boot_device(void)
> static int virtio_setup(void)
> {
> VDev *vdev = virtio_get_device();
> + vdev->is_cdrom = false;
> int ret;
That looks like a good spot, indeed! Could you please send it as a proper
patch (i.e. with a Signed-off-by line)? I think that would still be a good
fix for QEMU 9.2.
> Unfortunately when verifying the fix I found another unrelated issue with
> probing, which is that only the first device attached to the scsi controller
> will be found. This is because virtio_scsi_setup() itself contains a probing
> loop to find a LUN when none is specified, and, unsurprisingly, it returns
> the first thing it finds attached to the controller. As a result, the main
> device probing loop will move on after trying only one LUN per controller.
>
> Fixing this won't be a simple one-liner because it will require implementation
> of nested probing for scsi devices, such that all LUNS on the controller are
> probed before moving to the next device.
Ok, maybe that change will be too big for QEMU 9.2 anyway (we're in freeze
now), so it's ok to include this later, I think.
And in case you're interested (it's maybe not so important since it's rather
unlikely that the users will do this), there is another issue when trying to
boot from multiple network devices where the first one has a DHCP server but
no bootfile:
qemu-system-s390x -nographic -accel kvm -m 2G -netdev user,id=n1 \
-device virtio-net-ccw,netdev=n1,bootindex=1 \
-netdev user,id=n2,tftp=/boot,bootfile=vmlinuz \
-device virtio-net-ccw,netdev=n2,bootindex=2 -d guest_errors
The firmware seems to panic while trying to request DHCP information from
the second boot device.
Thomas
next prev parent reply other threads:[~2024-11-08 14:37 UTC|newest]
Thread overview: 42+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-20 1:29 [PATCH v5 00/19] s390x: Add Full Boot Order Support jrossi
2024-10-20 1:29 ` [PATCH v5 01/19] hw/s390x/ipl: Provide more memory to the s390-ccw.img firmware jrossi
2024-10-20 1:29 ` [PATCH v5 02/19] pc-bios/s390-ccw: Use the libc from SLOF and remove sclp prints jrossi
2024-10-22 17:36 ` Thomas Huth
2024-10-22 20:12 ` Jared Rossi
2024-10-23 4:51 ` Thomas Huth
2024-10-23 10:30 ` Jared Rossi
2024-10-20 1:29 ` [PATCH v5 03/19] pc-bios/s390-ccw: Link the netboot code into the main s390-ccw.img binary jrossi
2024-10-20 1:29 ` [PATCH v5 04/19] hw/s390x: Remove the possibility to load the s390-netboot.img binary jrossi
2024-10-20 1:29 ` [PATCH v5 05/19] pc-bios/s390-ccw: Merge netboot.mak into the main Makefile jrossi
2024-10-20 1:29 ` [PATCH v5 06/19] docs/system/s390x/bootdevices: Update the documentation about network booting jrossi
2024-10-20 1:29 ` [PATCH v5 07/19] pc-bios/s390-ccw: Remove panics from ISO IPL path jrossi
2024-10-21 8:41 ` Thomas Huth
2024-10-20 1:29 ` [PATCH v5 08/19] pc-bios/s390-ccw: Remove panics from ECKD " jrossi
2024-10-21 9:12 ` Thomas Huth
2024-10-20 1:29 ` [PATCH v5 09/19] pc-bios/s390-ccw: Remove panics from SCSI " jrossi
2024-10-21 9:26 ` Thomas Huth
2024-10-20 1:29 ` [PATCH v5 10/19] pc-bios/s390-ccw: Remove panics from DASD " jrossi
2024-10-20 1:29 ` [PATCH v5 11/19] pc-bios/s390-ccw: Remove panics from Netboot " jrossi
2024-10-21 9:30 ` Thomas Huth
2024-10-20 1:29 ` [PATCH v5 12/19] pc-bios/s390-ccw: Enable failed IPL to return after error jrossi
2024-10-20 1:29 ` [PATCH v5 13/19] include/hw/s390x: Add include files for common IPL structs jrossi
2024-10-20 1:29 ` [PATCH v5 14/19] s390x: Add individual loadparm assignment to CCW device jrossi
2024-10-21 12:26 ` Thomas Huth
2024-10-31 8:45 ` Thomas Huth
2024-11-05 20:22 ` Jared Rossi
2024-10-20 1:29 ` [PATCH v5 15/19] hw/s390x: Build an IPLB for each boot device jrossi
2024-10-21 12:43 ` Thomas Huth
2024-10-22 13:13 ` Thomas Huth
2024-10-22 14:25 ` Jared Rossi
2024-10-20 1:29 ` [PATCH v5 16/19] s390x: Rebuild IPLB for SCSI device directly from DIAG308 jrossi
2024-10-20 1:29 ` [PATCH v5 17/19] pc-bios/s390x: Enable multi-device boot loop jrossi
2024-10-22 7:33 ` Thomas Huth
2024-10-20 1:29 ` [PATCH v5 18/19] docs/system: Update documentation for s390x IPL jrossi
2024-10-20 1:29 ` [PATCH v5 19/19] tests/qtest: Add s390x boot order tests to cdrom-test.c jrossi
2024-10-21 14:52 ` Thomas Huth
2024-10-31 15:50 ` [PATCH v5 00/19] s390x: Add Full Boot Order Support Thomas Huth
2024-11-05 16:42 ` Jared Rossi
2024-11-06 11:10 ` Thomas Huth
2024-11-07 20:42 ` Jared Rossi
2024-11-08 14:37 ` Thomas Huth [this message]
2024-11-11 12:23 ` Thomas Huth
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=592e9413-f2cf-4e84-b594-4017ca8d60e1@redhat.com \
--to=thuth@redhat.com \
--cc=frankja@linux.ibm.com \
--cc=jrossi@linux.ibm.com \
--cc=qemu-devel@nongnu.org \
--cc=qemu-s390x@nongnu.org \
--cc=smitterl@redhat.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).