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

Reply via email to