Gleb Natapov wrote:
There is no way for qemu to know about BCVs or BEVs
This is very much the key point.
In order to have command line control over the boot process, the machine and the firmware must agree on things.
I see two options:
1. QEMU works very very hard to provide a machine that will result in a particular BBS program flow in firmware, in the end resulting in the desired device being used for booting - as long as QEMU and the firmware happen to have the same understanding of the BBS.
2. QEMU passes boot instructions to the firmware based on immediate, common, structured data.
The first option seems disgusting to me, because it has many drawbacks and no benefits.
The second option requires inventing something that goes beyond the established BIOS standards, maybe a reason for it to see fierce resistance, but it is the only thing that makes sense.
Specifying boot device using PCI BDF is a great example of using common structured data. That BDF exists both in machine and firmware data models. The scope of BBS is limited to the firmware, so it is not really practical for creating consistency in a dynamic machine.