On 29/05/2024 17.43, jro...@linux.ibm.com wrote:
From: Jared Rossi <jro...@linux.ibm.com>
This patch set primarily adds support for the specification of multiple boot
devices, allowing for the guest to automatically use an alternative device on
a failed boot without needing to be reconfigured. It additionally provides the
ability to define the loadparm attribute on a per-device bases, which allows
boot devices to use different loadparm values if needed.
In brief, an IPLB is generated for each designated boot device (up to a maximum
of 8) and stored in guest memory immediately before BIOS. If a device fails to
boot, the next IPLB is retrieved and we jump back to the start of BIOS.
Devices can be specified using the standard qemu device tag "bootindex" as with
other architectures. Lower number indices are tried first, with "bootindex=0"
indicating the first device to try.
A subsequent Libvirt patch will be necessary to allow assignment of per-device
loadparms in the guest XML
Jared Rossi (5):
Create include files for s390x IPL definitions
Add loadparm to CcwDevice
Build IPLB chain for multiple boot devices
Add boot device fallback infrastructure
Enable and document boot device fallback on panic
docs/system/bootindex.rst | 7 +-
docs/system/s390x/bootdevices.rst | 9 +-
hw/s390x/ccw-device.h | 2 +
hw/s390x/ipl.h | 117 +-------------------
include/hw/s390x/ipl/qipl.h | 128 ++++++++++++++++++++++
pc-bios/s390-ccw/bootmap.h | 5 +
pc-bios/s390-ccw/iplb.h | 108 +++++--------------
pc-bios/s390-ccw/s390-ccw.h | 6 ++
hw/s390x/ccw-device.c | 49 +++++++++
hw/s390x/ipl.c | 170 ++++++++++++++++++++++--------
hw/s390x/s390-virtio-ccw.c | 18 +---
hw/s390x/sclp.c | 3 +-
pc-bios/s390-ccw/bootmap.c | 41 ++++---
pc-bios/s390-ccw/main.c | 25 +++--
pc-bios/s390-ccw/netmain.c | 4 +
pc-bios/s390-ccw/Makefile | 2 +-
Hi Jared!
For v2, could you please add at least two tests: one that check booting from
the second disk and one that checks booting from the last boot disk when the
previous ones are invalid?
I could think of two easy ways for adding such tests, up to you what you prefer:
- Extend the tests/qtest/cdrom-test.c - see add_s390x_tests() there
- Add an avocado test - see "grep -l s390 tests/avocado/*.py" for examples.
Thomas