Thank you Andreas for your perspective and opinion. I hopefully addressed you comments and: - made clear in the 'test plan' as well as again in 'option' that qemu of LP#2049698 and libvirt of LP#2051239 belong together and can only be tested together - added a test plan with an xml guest snipped as example and test cases for regression testing and testing of the new functionality (I leave it up to the tester which exact devices will be used, since this depends a bit on what's available, but at least cdrom and hd.)
** Description changed: [ Impact ] * KVM virtual machines do not currently attempt booting from multiple targets, as defined by the targets' boot order properties. * Therefore, users cannot utilize existing management frameworks to control their boot order on CCW devices for multi device boot. * This SRU backports and utilizes the "virtio-ccw.loadparm" QEMU capabilities detection, so that if the QEMU version (detected at runtime) supports multi boot device, it makes use of it instead of using the single boot device machine parameter. [ Test Plan ] * Testing needs a specialized setup with virtualized CCW devices on s390x, an IBM z13 or LinuxONE system, running noble or newer. + * The (modified) qemu version of LP#2049698 is needed + and the libvirt version of this bug LP#2051239 is needed, + since this libvirt depends on the modified qemu. + + * The test itself would require at least two (ideally more) + bootable devices listed in the boot order (virsh xml file), like: + <os> + <type arch='s390x' machine='s390-ccw-virtio-noble'>hvm</type> + <boot dev='cdrom'/> + <boot dev='hd1'/> + <boot dev='hd2'/> + </os> + and proper detailed device section for the dev atrributes. + + * Then several cases should be tested: + - booting from the first (bootable) device, + if the second device is also bootable. + (regression test) + - booting from a (bootable) second device, + with having a first device that is not bootable. + (So that an attempt is made to boot from the second) + (test of new functionality) + - booting from a third (or later) (bootable) device, + when two (or more) devices earlier in the order are not bootable. + (So than more than one attempt is made to boot from a device). + (test of new functionality) + For achieving this the boot order needs to be adjusted, + and devices accordingly added that are bootable and non-bootable + to catch the above cases. + Different devices should be used as well, like CDROM and harddisks + of different types. + * The original bug reporter is supposed to help on the verification. [ Where problems could occur ] * This change touches the QEMU feature-flag/capabilities detection (for QEMU_CAPS_VIRTIO_CCW_DEVICE_LOADPARM). It is mostly isolated to virtualized s390x CCW devices, but if anything goes wrong, it could affect the overall capabilities detection of libvirt, leading to invalid control commands being generated for QEMU and therefore a change in behavior. - * For the potential change in behavior, please also see [ Other Info ], - 's390x KVM: Full Boot Order considerations' details. + * For the potential change in behavior, please also see [ Other Info ], + 's390x KVM: Full Boot Order considerations' details. [ Other Info ] * This enablement work is targeted to virtualized CCW devices on s390x * QEMU part of this enablement work is tracked in bug #2049698 + this modified qemu is needed for the overall test of libvirt, + but also vice-versa. - * s390x KVM: Full Boot Order considerations + * s390x KVM: Full Boot Order considerations - I want to leave some more details and explanation about a potential risk - due to a potential change in behavior - (thanks to Boris F. for the discussion - here is the summary): - - There is already a "boot order" before this 'full boot order patch set' - that is in discussion here, but so far libvirt handed over only the first - device of the boot order as boot device to qemu. - Since this is a known limitation to qemu on s390x users, there is usually - just only one device specified in the boot order (aka list) - on s390x. - Means a guest boots from the first (and usually only) boot device, - or it does not boot at all. + I want to leave some more details and explanation about a potential risk + due to a potential change in behavior + (thanks to Boris F. for the discussion - here is the summary): - But one could define one or more devices in the domain XML - also on s390x, - but this didn't change anything - the boot device was always the first one. - - Let’s go into some more details and distinguish the following two cases, - where multiple boot devices are configured (which again is unlikely, - since this was not supported, didn't work, hence wouldn’t change anything, - but nevertheless let us play it through to consider the regression risk - for this change): - 1) the first device is bootable - 2) the first device is NOT bootable - This leads to the following results with and without the - full boot order patch set: - 1) - a) without patch set: guest starts from first device - b) with patch set: guest starts from first device - 2) - a) without patch set: guest does not start at all as the first device fails - b) with patch set: guest does not start from first device - AND an attempt is made to boot from the next device in the boot order - So there is a potential change in behavior in case 2) b). - - But if a system is configured today, it is obviously configured to work, - that usually means it has only one bootable device - or in case it has - multiple ones (which is unlikely, since it was never supported), - the first one will be bootable. - - So case 1) can strongly be assumed. + There is already a "boot order" before this 'full boot order patch set' + that is in discussion here, but so far libvirt handed over only the first + device of the boot order as boot device to qemu. + Since this is a known limitation to qemu on s390x users, there is usually + just only one device specified in the boot order (aka list) - on s390x. + Means a guest boots from the first (and usually only) boot device, + or it does not boot at all. - Case 2) can be considered as an extreme (and useless) edge case, since: - i) a user would need to have a guest configured with a device that it - cannot boot from (which provides no function and with that no value) - ii) a user would need to have multiple devices configured in the boot order - and one other than the first one is bootable (which was not supported - until now and never work) - And only if both cases (i) and ii)) would apply, - a change in the behavior would be noticeable. + But one could define one or more devices in the domain XML - also on s390x, + but this didn't change anything - the boot device was always the first one. + + Let’s go into some more details and distinguish the following two cases, + where multiple boot devices are configured (which again is unlikely, + since this was not supported, didn't work, hence wouldn’t change anything, + but nevertheless let us play it through to consider the regression risk + for this change): + 1) the first device is bootable + 2) the first device is NOT bootable + This leads to the following results with and without the + full boot order patch set: + 1) + a) without patch set: guest starts from first device + b) with patch set: guest starts from first device + 2) + a) without patch set: guest does not start at all as the first device fails + b) with patch set: guest does not start from first device + AND an attempt is made to boot from the next device in the boot order + So there is a potential change in behavior in case 2) b). + + But if a system is configured today, it is obviously configured to work, + that usually means it has only one bootable device - or in case it has + multiple ones (which is unlikely, since it was never supported), + the first one will be bootable. + + So case 1) can strongly be assumed. + + Case 2) can be considered as an extreme (and useless) edge case, since: + i) a user would need to have a guest configured with a device that it + cannot boot from (which provides no function and with that no value) + ii) a user would need to have multiple devices configured in the boot order + and one other than the first one is bootable (which was not supported + until now and never work) + And only if both cases (i) and ii)) would apply, + a change in the behavior would be noticeable. ----- Original bug report ----- Allow KVM virtual machines to attempt booting from multiple targets, as defined by the targets' boot order properties. Customers will benefit from simplified installation, and can reuse existing management frameworks. (This is the libvirt part of the feature) -- You received this bug notification because you are a member of Ubuntu Bugs, which is subscribed to Ubuntu. https://bugs.launchpad.net/bugs/2051239 Title: [25.04 FEAT] [VS1807] KVM: Full boot order support - libvirt part To manage notifications about this bug go to: https://bugs.launchpad.net/ubuntu-z-systems/+bug/2051239/+subscriptions -- ubuntu-bugs mailing list [email protected] https://lists.ubuntu.com/mailman/listinfo/ubuntu-bugs
