[SLOF] [PATCH] Rework handling of the "qemu, boot-list" property
thuth at redhat.com
Wed Feb 1 19:16:51 AEDT 2017
On 01.02.2017 04:05, Alexey Kardashevskiy wrote:
> On 13/01/17 20:55, Thomas Huth wrote:
>> If the user started QEMU with both, devices that are specified with
>> a "bootindex=..." parameter and with the parameter "-boot order=..."
>> (or "-boot once=..."), there are currently two issues in SLOF with
>> the resulting boot order:
>> 1) Everything from "-boot order=..." gets ignored completely as soon as
>> one of the other devices has a "bootindex" parameter - even if we
>> boot with "strict=off". For example if the user starts QEMU with
>> "-device virtio-blk-pci,bootindex=0 -boot order=cn", the NIC has
>> not been specified with a "bootindex" and the block device is not
>> bootable, SLOF never tries to boot from the network device.
>> 2) The "-boot once=..." feature can never be used as soon as one
>> device has been specified with a "bootindex" parameter.
>> The devices with "bootindex" are passed to SLOF in a sorted list via
>> the "qemu,boot-list" property, and the value from "-boot order" or
>> "-boot once" is passed to SLOF directly via the "qemu,boot-device"
>> property. To fix the problems when a user specified both, we should
>> rather treat the "qemu,boot-device" property as a group filter for
>> the "qemu,boot-list", so that we only consider those devices in
>> "qemu,boot-list" which match the specified classes from the
>> "qemu,boot-device" property.
>> Additionally if we're not in strict=on boot mode, we should always
>> continue to consider all other boot devices and not stop after
>> processing the devices from "qemu,boot-list".
> Rather than doing all of this in SLOF, I'd get rid of qemu,boot-device and
> populate qemu,boot-list in QEMU, have you considered this approach?
While this sounds very tempting at a first glance (we could write the
whole mess in C instead), I'm a little bit afraid that we might run into
problems with passthrough devices later. Imagine that the user passes a
PCI NIC through to the guest, and starts QEMU with "-boot once=n" ...
does QEMU check the type of the PCI card in this case, so it could
correctly put it into the qemu,boot-list ? If yes, it might be feasible
to do it all in QEMU, otherwise we likely have to continue with creating
the correct list in SLOF instead.
More information about the SLOF