Hello, This patch series adds PCI support for ARM targets to lkvm. Note that there are corresponding kernel patches in order for Linux to use the virtual PCI host controller, so the interface is still subject to change. The main parts of this series are: - Fixes to the MSI-X bar and virtio-net device initialisation - An effective rewrite of the IRQ allocation code, so that core code handles the IRQ allocation for a device, based upon its bus - Introduction of a PCI Memory Space, which is actually a shim around the ioport emulation and simply redirects guest access there - Generation of a device-tree node describing the PCI emulation, using the properties laid out in ePAPR and associated specs Tested on x86_64, AArch32 and AArch64. Build-tested only on PPC64. All feedback welcome! Will Will Deacon (17): kvm tools: pci: register virtio pba structure as mmio region with kvm kvm tools: pci: remove BAR 3 hangover from virtio pci msix code kvm tools: net: don't propagate error codes from tx/rx operations kvm tools: net: allow a mixture of pci and mmio virtio devices kvm tools: pci: register 24-bit configuration space below MMIO region kvm tools: pci: ensure BARs are naturally aligned kvm tools: pci: add MMIO interface to virtio-pci devices kvm tools: irq: remove pin parameter from irq__register_device kvm tools: irq: replace the x86 irq rbtree with the PCI device tree kvm tools: irq: remove remaining parameters to irq__register_device kvm tools: irq: rename irq__register_device to irq__alloc_line kvm tools: irq: make irq__alloc_line generic kvm tools: irq: move irq line allocation into device registration kvm tools: ARM: route guest PCI accesses to the emulation layer kvm tools: ARM: generate an fdt node for our PCI emulation kvm tools: powerpc: make use of common of_pci.h header definitions kvm tools: ARM: allow default virtio transport to be passed on cmdline tools/kvm/Makefile | 3 +- tools/kvm/arm/fdt.c | 4 + tools/kvm/arm/gic.c | 12 -- tools/kvm/arm/include/arm-common/kvm-arch.h | 20 +++- tools/kvm/arm/include/arm-common/kvm-config-arch.h | 12 +- tools/kvm/arm/include/arm-common/pci.h | 6 + tools/kvm/arm/ioport.c | 5 +- tools/kvm/arm/irq.c | 8 -- tools/kvm/arm/kvm-cpu.c | 4 +- tools/kvm/arm/kvm.c | 5 + tools/kvm/arm/pci.c | 118 ++++++++++++++++++++ tools/kvm/devices.c | 13 +++ tools/kvm/hw/pci-shmem.c | 9 -- tools/kvm/hw/vesa.c | 7 -- tools/kvm/include/kvm/irq.h | 16 +-- tools/kvm/include/kvm/of_pci.h | 44 ++++++++ tools/kvm/include/kvm/pci.h | 3 + tools/kvm/include/kvm/virtio-mmio.h | 1 + tools/kvm/include/kvm/virtio-pci.h | 4 +- tools/kvm/irq.c | 9 ++ tools/kvm/net/uip/core.c | 2 +- tools/kvm/pci.c | 54 +++++++-- tools/kvm/powerpc/include/kvm/kvm-arch.h | 9 +- tools/kvm/powerpc/irq.c | 19 ---- tools/kvm/powerpc/spapr_pci.c | 114 ++++++++----------- tools/kvm/powerpc/xics.c | 28 +---- tools/kvm/virtio/9p.c | 2 +- tools/kvm/virtio/balloon.c | 2 +- tools/kvm/virtio/blk.c | 2 +- tools/kvm/virtio/console.c | 2 +- tools/kvm/virtio/mmio.c | 14 ++- tools/kvm/virtio/net.c | 42 +++++-- tools/kvm/virtio/pci.c | 120 ++++++++++++-------- tools/kvm/virtio/rng.c | 2 +- tools/kvm/virtio/scsi.c | 2 +- tools/kvm/x86/include/kvm/kvm-arch.h | 9 +- tools/kvm/x86/irq.c | 121 --------------------- tools/kvm/x86/mptable.c | 35 +++--- 38 files changed, 480 insertions(+), 402 deletions(-) create mode 100644 tools/kvm/arm/include/arm-common/pci.h create mode 100644 tools/kvm/arm/pci.c create mode 100644 tools/kvm/include/kvm/of_pci.h create mode 100644 tools/kvm/irq.c -- 1.8.2.2 -- To unsubscribe from this list: send the line "unsubscribe kvm" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html