| This is an *experimental* port of OVMF for the QEMU microvm | |
| machine type. | |
| microvm background info | |
| ----------------------- | |
| microvm is designed for modern, virtio-based workloads. Most legacy | |
| lpc/isa devices like pit and pic can be turned off. virtio-mmio | |
| (i.e. '-device virtio-{blk,net,scsi,...}-device') is used for | |
| storage/network/etc. | |
| Optional pcie support is available and any pcie device supported by | |
| QEMU can be plugged in (including virtio-pci if you prefer that over | |
| virtio-mmio). | |
| https://qemu.readthedocs.io/en/latest/system/i386/microvm.html | |
| https://www.kraxel.org/blog/2020/10/qemu-microvm-acpi/ | |
| design issues | |
| ------------- | |
| Not fully clear yet how to do hardware detection best. Right now | |
| using device tree to find virtio-mmio devices and pcie host bridge, | |
| can reuse existing ArmVirtPkg code that way. Needs patched QEMU. | |
| features | |
| -------- | |
| [working] serial console | |
| [working] direct kernel boot | |
| [working] virtio-mmio support | |
| [working] pcie support | |
| known limitations | |
| ----------------- | |
| * rtc=on is required for now. | |
| * can't use separate code/vars (actually an microvm limitation, | |
| there is no pflash support). | |
| * transitional virtio-pci devices do not work. microvm doesn't | |
| support ioports on pcie, and ovmf doesn't initialize pcie devices | |
| with ioports if there is no address space for them (even though | |
| pcie devices are required to be functional without ioports). | |
| usage | |
| ----- | |
| qemu-system-x86_64 \ | |
| -nographic \ | |
| -machine microvm,acpi=on,pit=off,pic=off,rtc=on \ | |
| -bios /path/to/MICROVM.fd \ | |
| [ ... more args here ... ] |