mirror of https://github.com/acidanthera/audk.git
3dfd64305b
There are below 2 differences between AMD & OVMF according existing implementation: 1.The mode of the CPU check is different between the AMD & OVMF. OVMF: CpuSaveState->x86.SMMRevId & 0Xffff AMD: LMAValue = (UINT32)AsmReadMsr64 (EFER_ADDRESS) & LMA 2.Existing SmBase configuration is different between the AMD & OVMF. OVMF: if ((CpuSaveState->x86.SMMRevId & 0xFFFF) == 0) { CpuSaveState->x86.SMBASE = mSmBaseForAllCpus[CpuIndex]; } else { CpuSaveState->x64.SMBASE = mSmBaseForAllCpus[CpuIndex]; } AMD: AmdCpuState->x64.SMBASE = mSmBaseForAllCpus[CpuIndex]; This patch provides the SmmRelocationLib library instance for OVMF to handle the logic difference, and it won't change the existing implementation code logic. Cc: Ray Ni <ray.ni@intel.com> Cc: Zeng Star <star.zeng@intel.com> Cc: Ard Biesheuvel <ardb+tianocore@kernel.org> Cc: Jiewen Yao <jiewen.yao@intel.com> Cc: Gerd Hoffmann <kraxel@redhat.com> Cc: Rahul Kumar <rahul1.kumar@intel.com> Signed-off-by: Jiaxin Wu <jiaxin.wu@intel.com> Tested-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Gerd Hoffmann <kraxel@redhat.com> Acked-by: Jiewen Yao <Jiewen.yao@intel.com> |
||
---|---|---|
.. | ||
MicrovmX64.dsc | ||
MicrovmX64.fdf | ||
README |
README
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 ... ]