Alex Graf has written patches for QEMU that add a generic PCI express host to the "virt" machine (qemu-system-arm, qemu-system-aarch64). The QEMU patches are now queued for merging in the following repo:
git://git.linaro.org/people/pmaydell/qemu-arm.git branch "target-arm.next". This series enables the ArmVirtualizationQemu platform to take advantage of Alex's QEMU work. At the end of the series, - there's VGA output in a graphical window, - which also takes input via a USB keyboard, - and virtio-pci works too. Public branch: https://github.com/lersek/edk2/commits/armvirt_pci_v1 Anatomy of the patchset: - #01 through #05 are preparatory patches, with 03 being relevant for an independent, parallel discussion too (how to delay ACPI table installation conditionally & dynamically until PCI enumeration completes), - #06 parses the new node in the DTB, - #07 clones the PCI host bridge / root bridge driver from PcAtChipsetPkg with minimal build-level customizations (the driver is not enabled for building at this point), - #08 through #19 adapt the cloned PciHostBridgeDxe to the ARM/AARCH64 guest specifics (#10 is relevant for the parallel discussion mentioned above), - #20 and #21 enable building PciHostBridgeDxe, - #22 and #23 fix things in PlatformIntelBdsLib that now qualify as bugs, - #24 and #25 add VGA console output and USB keyboard input, - #26 and #27 update some INF files in MdePkg and MdeModulePkg so their VALID_ARCHITECTURES include ARM and AARCH64. I'm sending the series to many people; I'm including most of you guys so you can skim the commit messages and yell at me if something looks wrong. Thanks Laszlo Laszlo Ersek (27): OptionRomPkg: FrameBufferBltLib: drop set but not used variable OvmfPkg/QemuVideoDxe: enable ARM builds OvmfPkg/AcpiPlatformDxe: dynamic dependency on PCI enumeration completion PcAtChipsetPkg/PciHostBridgeDxe: fix typo in "aperture" PcAtChipsetPkg/PciHostBridgeDxe: drop PciAddress, PciData ArmVirtualizationPkg/VirtFdtDxe: parse "pci-host-ecam-generic" properties ArmVirtualizationPkg/PciHostBridgeDxe: clone from PcAtChipsetPkg ArmVirtualizationPkg/PciHostBridgeDxe: ECAM enables 4KB config space ArmVirtualizationPkg/PciHostBridgeDxe: set Root Bridge apertures from PCDs ArmVirtualizationPkg/PciHostBridgeDxe: abort if there's no PCI host bridge ArmVirtualizationPkg/PciHostBridgeDxe: translate addresses for IO and MMIO ArmVirtualizationPkg/PciHostBridgeDxe: IO space is emulated with MMIO ArmVirtualizationPkg/PciHostBridgeDxe: accommodate general address spaces ArmVirtualizationPkg/ArmVirtualizationQemu: enable IO addressing ArmVirtualizationPkg/PciHostBridgeDxe: add room for PCI resource allocation ArmVirtualizationPkg/PciHostBridgeDxe: allocate IO BARs top-down ArmVirtualizationPkg/PciHostBridgeDxe: get MMIO BARs from our own aperture ArmVirtualizationPkg/PciHostBridgeDxe: skip 0 AddrLen in SubmitResources() ArmVirtualizationPkg/PciHostBridgeDxe: handle 0 in GetProposedResources() ArmVirtualizationPkg: clone BasePciExpressLib, cache PCIe config base ArmVirtualizationPkg/ArmVirtualizationQemu: enable PCI support ArmVirtualizationPkg: PlatformIntelBdsLib: kernel boot should provide ACPI ArmVirtualizationPkg: PlatformIntelBdsLib: fix multiconsole setup ArmVirtualizationPkg/ArmVirtualizationQemu: add VGA console output ArmVirtualizationPkg/ArmVirtualizationQemu: add USB keyboard input MdePkg: BasePciLibPciExpress: list ARM and AARCH64 as valid architectures MdeModulePkg: list ARM and AARCH64 as valid architectures for some modules ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualization.dsc.inc | 7 + ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationPkg.dec | 20 +++ ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.dsc | 76 ++++++++- ArmPlatformPkg/ArmVirtualizationPkg/ArmVirtualizationQemu.fdf | 21 +++ ArmPlatformPkg/ArmVirtualizationPkg/Library/PlatformIntelBdsLib/IntelBdsPlatform.c | 116 ++----------- ArmPlatformPkg/ArmVirtualizationPkg/VirtFdtDxe/VirtFdtDxe.c | 171 ++++++++++++++++++-- ArmPlatformPkg/ArmVirtualizationPkg/VirtFdtDxe/VirtFdtDxe.inf | 9 ++ MdeModulePkg/Bus/Pci/EhciDxe/EhciDxe.inf | 2 +- MdeModulePkg/Bus/Pci/PciBusDxe/PciBusDxe.inf | 2 +- MdeModulePkg/Bus/Pci/UhciDxe/UhciDxe.inf | 2 +- MdeModulePkg/Bus/Usb/UsbBusDxe/UsbBusDxe.inf | 2 +- MdeModulePkg/Bus/Usb/UsbKbDxe/UsbKbDxe.inf | 2 +- MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf => ArmPlatformPkg/ArmVirtualizationPkg/Library/BaseCachingPciExpressLib/BaseCachingPciExpressLib.inf | 10 +- {MdePkg/Library/BasePciExpressLib => ArmPlatformPkg/ArmVirtualizationPkg/Library/BaseCachingPciExpressLib}/PciExpressLib.c | 18 ++- MdePkg/Library/BasePciLibPciExpress/BasePciLibPciExpress.inf | 2 +- OptionRomPkg/Library/FrameBufferBltLib/FrameBufferBltLib.c | 2 - OvmfPkg/AcpiPlatformDxe/AcpiPlatformDxe.inf | 5 +- OvmfPkg/AcpiPlatformDxe/QemuFwCfgAcpiPlatformDxe.inf | 8 +- OvmfPkg/Include/Protocol/OvmfAcpiPlatformNoPciEnumeration.h | 28 ++++ OvmfPkg/OvmfPkg.dec | 7 +- OvmfPkg/QemuVideoDxe/Driver.c | 2 + OvmfPkg/QemuVideoDxe/QemuVideoDxe.inf | 4 +- PcAtChipsetPkg/PciHostBridgeDxe/PciHostBridge.c | 6 +- PcAtChipsetPkg/PciHostBridgeDxe/PciHostBridge.h | 9 +- PcAtChipsetPkg/PciHostBridgeDxe/PciRootBridgeIo.c | 21 ++- {PcAtChipsetPkg => ArmPlatformPkg/ArmVirtualizationPkg}/PciHostBridgeDxe/PciHostBridge.c | 83 ++++++++-- {PcAtChipsetPkg => ArmPlatformPkg/ArmVirtualizationPkg}/PciHostBridgeDxe/PciHostBridge.h | 16 +- {PcAtChipsetPkg => ArmPlatformPkg/ArmVirtualizationPkg}/PciHostBridgeDxe/PciHostBridgeDxe.inf | 30 ++-- {PcAtChipsetPkg => ArmPlatformPkg/ArmVirtualizationPkg}/PciHostBridgeDxe/PciRootBridgeIo.c | 126 ++++++--------- 29 files changed, 531 insertions(+), 276 deletions(-) copy MdePkg/Library/BasePciExpressLib/BasePciExpressLib.inf => ArmPlatformPkg/ArmVirtualizationPkg/Library/BaseCachingPciExpressLib/BaseCachingPciExpressLib.inf (74%) copy {MdePkg/Library/BasePciExpressLib => ArmPlatformPkg/ArmVirtualizationPkg/Library/BaseCachingPciExpressLib}/PciExpressLib.c (96%) create mode 100644 OvmfPkg/Include/Protocol/OvmfAcpiPlatformNoPciEnumeration.h copy {PcAtChipsetPkg => ArmPlatformPkg/ArmVirtualizationPkg}/PciHostBridgeDxe/PciHostBridge.c (92%) copy {PcAtChipsetPkg => ArmPlatformPkg/ArmVirtualizationPkg}/PciHostBridgeDxe/PciHostBridge.h (96%) copy {PcAtChipsetPkg => ArmPlatformPkg/ArmVirtualizationPkg}/PciHostBridgeDxe/PciHostBridgeDxe.inf (65%) copy {PcAtChipsetPkg => ArmPlatformPkg/ArmVirtualizationPkg}/PciHostBridgeDxe/PciRootBridgeIo.c (94%) -- 1.8.3.1 ------------------------------------------------------------------------------ Dive into the World of Parallel Programming. The Go Parallel Website, sponsored by Intel and developed in partnership with Slashdot Media, is your hub for all things parallel software development, from weekly thought leadership blogs to news, videos, case studies, tutorials and more. Take a look and join the conversation now. http://goparallel.sourceforge.net/ _______________________________________________ edk2-devel mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/edk2-devel
