Linux implements a nice binding to describe a "generic" PCI Express host bridge using only device tree.
This patch set adds enough emulation logic to expose the parts that are "generic" as a simple sysbus device and maps it into ARM's virt machine. With this patch set, we can finally spawn PCI devices on ARM VMs. I was able to have a fully DRM enabled virtual machine with VGA, e1000 and XHCI (for keyboard and mouse) up and working. It's only a small step for QEMU, but a big step for ARM VM's usability. Happy new year! Alexander Graf (4): pci: Split pcie_host_mmcfg_map() pci: Add generic PCIe host bridge arm: Add PCIe host bridge in virt machine arm: enable Bochs PCI VGA default-configs/arm-softmmu.mak | 3 + hw/arm/virt.c | 83 +++++++++++++++++++-- hw/pci-host/Makefile.objs | 1 + hw/pci-host/gpex.c | 156 ++++++++++++++++++++++++++++++++++++++++ hw/pci/pcie_host.c | 9 ++- include/hw/pci-host/gpex.h | 56 +++++++++++++++ include/hw/pci/pcie_host.h | 1 + 7 files changed, 302 insertions(+), 7 deletions(-) create mode 100644 hw/pci-host/gpex.c create mode 100644 include/hw/pci-host/gpex.h -- 1.7.12.4