2021-12-13 09:16:58 +01:00
|
|
|
|
|
|
|
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
|
2022-06-02 10:42:16 +02:00
|
|
|
[working] pcie support
|
2021-12-13 09:16:58 +01:00
|
|
|
|
|
|
|
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 ... ]
|