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 [email protected]
More majordomo info at http://vger.kernel.org/majordomo-info.html