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 majord...@vger.kernel.org
More majordomo info at  http://vger.kernel.org/majordomo-info.html

Reply via email to