On 29/07/2020 13.42, Viktor Mihajlovski wrote: > > > On 7/28/20 8:37 PM, Thomas Huth wrote: >> If the user did not specify a "bootindex" property, the s390-ccw bios >> tries to find a bootable device on its own. Unfortunately, it alwasy >> stops at the very first device that it can find, no matter whether it's >> bootable or not. That causes some weird behavior, for example while >> >> qemu-system-s390x -hda bootable.qcow2 >> >> boots perfectly fine, the bios refuses to work if you just specify >> a virtio-scsi controller in front of it: >> >> qemu-system-s390x -device virtio-scsi -hda bootable.qcow2 >> >> Since this is quite uncomfortable and confusing for the users, and >> all major firmwares on other architectures correctly boot in such >> cases, too, let's also try to teach the s390-ccw bios how to boot >> in such cases. >> >> For this, we have to get rid of the various panic()s and IPL_assert() >> statements at the "low-level" function and let the main code handle >> the decision instead whether a boot from a device should fail or not, >> so that the main code can continue searching in case it wants to. >> > > Looking at it from an architectural perspective: If an IPL Information > Block specifying the boot device has been set and can be retrieved using > Diagnose 308 it has to be respected, even if the device doesn't contain > a bootable program. The boot has to fail in this case. > > I had not the bandwidth to follow all code paths, but I gather that this > is still the case with the series.
Right. Just to be sure, I just double-checked with: ... -device virtio-blk,drive=baddrive,bootindex=1 \ -device virtio-blk,drive=gooddrive and indeed, the s390-ccw bios only checks the "baddrive" here and refuses to boot. > So one can argue that these changes > are taking care of an undefined situation (real hardware will always > have the IPIB set). > > As long as the architecture is not violated, I can live with the > proposed changes. Thanks! > I however would like to point out that this only > covers a corner case (no -boot or -device ..,bootindex specified). Sure. We™ should/could maybe also add some more documentation to https://www.qemu.org/docs/master/system/target-s390x.html to make it more clear to the "unexperienced" qemu-system-s390x users that "bootindex" is the preferred / architected way of booting there. > Please don't create the impression that this patches will lead to the > same behavior as on other platforms. Ok, I'll try to state that more clearly in the cover letter of v2. Thomas