This series 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: add -bios param and wire it up to NOR flash banks at 0x0 and 0x400_0000
- QEMU: copy DTB to base of DRAM if no -kernel option is passed
- KVM: add support for CAP_READONLY_MEM
- KVM: advance PC when resuming guest after a WFI

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)

Ard Biesheuvel (9):
  Add minimal support for passing a device tree image
  PeiCore: allow FVs residing at physical address 0x0
  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                                  |  34 +-
 ArmPkg/Drivers/ArmGic/ArmGicDxe.c                  |  34 +-
 ArmPkg/Drivers/ArmGic/ArmGicDxe.inf                |   4 +-
 ArmPkg/Drivers/TimerDxe/TimerDxe.c                 |  12 +-
 ArmPkg/Drivers/TimerDxe/TimerDxe.inf               |   3 +
 ArmPkg/Library/ArmLib/AArch64/AArch64ArchTimer.c   |  66 +++-
 ArmPkg/Library/ArmLib/AArch64/AArch64Lib.inf       |   2 +
 ArmPkg/Library/ArmLib/AArch64/AArch64LibPrePi.inf  |   1 +
 ArmPkg/Library/ArmLib/AArch64/AArch64LibSec.inf    |   1 +
 ArmPkg/Library/BdsLib/BdsLib.inf                   |   5 +-
 .../AArch64Virtualization-KVM.dsc                  | 236 ++++++++++++++
 .../AArch64Virtualization-KVM.fdf                  | 301 ++++++++++++++++++
 .../AArch64Virtualization.dsc.inc                  | 354 +++++++++++++++++++++
 .../AArch64VirtualizationPkg/Driver/VirtFdt.inf    |  60 ++++
 .../AArch64VirtualizationPkg/Driver/VirtFdtDxe.c   | 216 +++++++++++++
 .../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    |   2 -
 ArmPlatformPkg/PrePi/PeiUniCore.inf                |   6 +-
 MdeModulePkg/Core/Pei/FwVol/FwVol.c                |   6 +-
 MdeModulePkg/MdeModulePkg.dec                      |   2 +
 MdeModulePkg/MdeModulePkg.dsc                      |   2 +
 .../Universal/Fdt/FdtTableDxe/FdtTableDxe.c        |  33 ++
 .../Universal/Fdt/FdtTableDxe/FdtTableDxe.inf      |  48 +++
 MdePkg/Include/Guid/FdtTable.h                     |  26 ++
 MdePkg/MdePkg.dec                                  |   3 +
 40 files changed, 2181 insertions(+), 71 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
 create mode 100644 MdeModulePkg/Universal/Fdt/FdtTableDxe/FdtTableDxe.c
 create mode 100644 MdeModulePkg/Universal/Fdt/FdtTableDxe/FdtTableDxe.inf
 create mode 100644 MdePkg/Include/Guid/FdtTable.h

-- 
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