I've thought some more about this issue, and long term I think there are a couple different useful configurations:
- For end users, having default firmware that loaded the OS from a block device would be easiest
- Current invocation: impossible
- Proposed: empty command line (i.e. pass neither -bios nor -kernel)
- Custom firmware support would be good to test possible firmware improvements or if the default is missing something
- Current invocation: -kernel firmware.elf
- Proposed: -bios firmware.elf
- A kernel developer may want to test a kernel binary without having to make a full disk image or bundle firmware (on x86 and perhaps other architectures this is done with the -kernel parameter, but for RISC-V that invocation currently is used to load M-mode code rather than supervisor code)
- Current invocation: impossible
- Proposed: -bios firmware.elf -kernel kernel.bin
- Ideally `-kernel kernel.bin` be the same except using default firmware, but I don't know if QEMU would be willing to deprecate the current syntax to allow it
For now, it is probably too early to add default firmware (but perhaps not?) which would leave only the firmware only and firmware + kernel variants. What do other people think about this?
Jonathan