This is v2 of the series that adds a platform config to support QEMU based virtual machines, either in TCG or KVM mode. These virtual machines declare their platform configuration by passing a device tree which needs to be parsed by Tianocore rather than relying on hardcoded peripherals.
Currently, the only assumptions made with respect to the platform config are: - at least 1 MB of DRAM at 0x4000_0000 - NOR flash at 0x0 - PL011 UART at 0x900_0000 Peripherals detected at runtime: - GIC interrupt controller - timer interrupt line - PL031 RTC - system memory base and size, although changing the base is not currently supported - virtio MMIO transports There are some dependencies on QEMU and KVM changes that are not yet upstream: - QEMU: 'hw/arm/virt: Provide flash devices for boot ROMs' - QEMU: copy DTB to base of DRAM if no -kernel option is passed - KVM: 'arm/arm64: KVM: Support KVM_CAP_READONLY_MEM' - KVM: 'arm/arm64: KVM: Complete WFI/WFE instructions' Note that most of the patches are minor ones that make certain peripherals configurable at runtime. The patch 'ArmPlatformPkg: add support for a QEMU/mach-virt target' is the primary patch that implements most of the QEMU/KVM interface logic, most notably parsing of the device tree to set PCDs containing base addresses etc. The code was tested in TCG mode on x64_64 and in TCG and KVM mode on a ARMv8 Foundation Model (software emulator) Changes since v1: - rebased onto upstream GitHub tianocore/edk2.git (421ccda307) - moved primary FV 0x1000 bytes into flash image, and added jump to it at 0x0 - dropped patch to allow FVs at physical offset 0x0 - dropped patch introducing device config table GUID, and used the upstream one instead (EmbeddedPkg/Include/Guid/Fdt.h) - added 'Contributed-under:' lines to commit logs - style fixes: remove redundant '== TRUE', add space between function and ( - updated/removed comments related to arch timer PCD and arch timer imask - use feature PCD to define whether to use the virtual timer Ard Biesheuvel (7): ArmPkg: allow dynamically discovered virtual timer interrupt ArmPkg: allow dynamic GIC base addresses ArmPlatformPkg/PrePeiCore: remove GIC related PCDs from unicore ArmPlatformPkg: allow dynamically discovered PL031 RTC ArmPkg,ArmPlatformPkg: allow dynamic PCDs for memory base and size ArmPlatformPkg: add support for a QEMU/mach-virt target AArch64-KVM: add support for non-volatile variable store Michael Casadevall (1): ArmPkg/TimerDxe: allow virtual timer to be selected ArmPkg/ArmPkg.dec | 32 +- ArmPkg/Drivers/ArmGic/ArmGicDxe.inf | 4 +- ArmPkg/Drivers/ArmGic/GicV2/ArmGicV2Dxe.c | 37 ++- ArmPkg/Drivers/TimerDxe/TimerDxe.c | 12 +- ArmPkg/Drivers/TimerDxe/TimerDxe.inf | 4 +- ArmPkg/Library/ArmLib/AArch64/AArch64ArchTimer.c | 74 ++++- ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf | 4 + ArmPkg/Library/ArmLib/AArch64/AArch64LibPrePi.inf | 3 + ArmPkg/Library/ArmLib/AArch64/AArch64LibSec.inf | 3 + ArmPkg/Library/BdsLib/BdsLib.inf | 5 +- .../AArch64Virtualization-KVM.dsc | 237 ++++++++++++++ .../AArch64Virtualization-KVM.fdf | 309 ++++++++++++++++++ .../AArch64Virtualization.dsc.inc | 354 +++++++++++++++++++++ .../AArch64VirtualizationPkg/Driver/VirtFdt.inf | 60 ++++ .../AArch64VirtualizationPkg/Driver/VirtFdtDxe.c | 229 +++++++++++++ .../Include/Platform/KVM/ArmPlatform.h | 38 +++ .../AArch64VirtualizationLibKVM/AArch64KVMLib.inf | 53 +++ .../Library/AArch64VirtualizationLibKVM/KVM.c | 127 ++++++++ .../AArch64VirtualizationLibKVM/KVMHelper.S | 70 ++++ .../Library/AArch64VirtualizationLibKVM/KVMMem.c | 106 ++++++ .../AArch64VirtualizationSysConfigLibKVM.c | 95 ++++++ .../AArch64VirtualizationSysConfigLibKVM.inf | 35 ++ .../Library/NorFlashKVM/NorFlashKVM.c | 63 ++++ .../Library/NorFlashKVM/NorFlashKVM.inf | 35 ++ .../Library/ResetSystemLib/ResetSystemLib.c | 96 ++++++ .../Library/ResetSystemLib/ResetSystemLib.inf | 33 ++ ArmPlatformPkg/ArmPlatformPkg.dec | 9 +- .../PrePi/PrePiArmPlatformGlobalVariableLib.inf | 7 +- ArmPlatformPkg/MemoryInitPei/MemoryInitPeiLib.inf | 6 +- ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.c | 16 +- ArmPlatformPkg/MemoryInitPei/MemoryInitPeim.inf | 6 +- ArmPlatformPkg/PrePeiCore/PrePeiCoreUniCore.inf | 3 - ArmPlatformPkg/PrePi/PeiUniCore.inf | 6 +- 33 files changed, 2101 insertions(+), 70 deletions(-) create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/AArch64Virtualization-KVM.dsc create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/AArch64Virtualization-KVM.fdf create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/AArch64Virtualization.dsc.inc create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Driver/VirtFdt.inf create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Driver/VirtFdtDxe.c create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Include/Platform/KVM/ArmPlatform.h create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/AArch64VirtualizationLibKVM/AArch64KVMLib.inf create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/AArch64VirtualizationLibKVM/KVM.c create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/AArch64VirtualizationLibKVM/KVMHelper.S create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/AArch64VirtualizationLibKVM/KVMMem.c create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/AArch64VirtualizationSysConfigLibKVM/AArch64VirtualizationSysConfigLibKVM.c create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/AArch64VirtualizationSysConfigLibKVM/AArch64VirtualizationSysConfigLibKVM.inf create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/NorFlashKVM/NorFlashKVM.c create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/NorFlashKVM/NorFlashKVM.inf create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/ResetSystemLib/ResetSystemLib.c create mode 100644 ArmPlatformPkg/AArch64VirtualizationPkg/Library/ResetSystemLib/ResetSystemLib.inf -- 1.8.3.2 ------------------------------------------------------------------------------ Slashdot TV. Video for Nerds. Stuff that matters. http://tv.slashdot.org/ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
