[libvirt] [PATCH 0/4] Enable spapr-pci-vfio-host-bridge controllers for VFIO passthrough support

Shivaprasad G Bhat shivaprasadbhat at gmail.com
Fri Oct 17 16:44:07 UTC 2014


The following series of patches enable spapr-pci-vfio-host-bridge 
controllers on PPC64-pseries machine which is required for supporting
host device passthrough using VFIO.

There were some initial enablement work on the same at 
http://www.redhat.com/archives/libvir-list/2013-September/msg00838.html.

The testing revealed contrasting observations and the current patch series 
solve the same.

Unlike other architectures, on pseries(ppc64) the vfio host devices(will refer 
as hostdevs here on) cannot be assigned to the default emulated pci-host-
bus controller(like the default pci.0).

On pseries, the hostdevs goto spapr-pci-vfio-host-bridge. The hostdevs 
belonging to the same iommu group share the same spapr-pci-vfio-host-bridge.
Henceforth, new spapr-pci-host-bridge needs to be added for every hostdev
belonging to any new iommu group. The hostdevs appear in new pci domain inside
the guest.

The spapr-pci-vfio-host-bridge is a generic bridge and it can host both
pci and pci-e host devices. The model pci-root is chosen for this controller
just for convenience.

The patch series take care to add the new controller. Each new controller
creates up a new pci domain in the guest. Every hostdev get their pci address in the 
relavent domain.

Tha patch series take care of device addressing in passthrough hostdevs, 
SR-IOV interfaces and network interface from SRIOV virtual function pools.

---

Shivaprasad G Bhat (4):
      qemu: Add SPAPR_VFIO_HOST_BRIDGE capability for PPC platform
      qemu: parse and add spapr-vfio-pci controller into domain
      qemu: assign addresses for spapr vfio hostdevices and generate cli
      qemu: add test case for spapr-pci-vfio-host-bridge


 docs/schemas/domaincommon.rng                      |   28 ++
 src/bhyve/bhyve_domain.c                           |    2 
 src/conf/domain_addr.c                             |    8 -
 src/conf/domain_addr.h                             |    1 
 src/conf/domain_conf.c                             |  149 ++++++++++-
 src/conf/domain_conf.h                             |   19 +
 src/libvirt_private.syms                           |    2 
 src/qemu/qemu_capabilities.c                       |    2 
 src/qemu/qemu_capabilities.h                       |    1 
 src/qemu/qemu_command.c                            |  279 +++++++++++++++++++-
 src/qemu/qemu_command.h                            |   17 +
 src/qemu/qemu_domain.c                             |   12 -
 src/qemu/qemu_driver.c                             |    6 
 tests/qemuhotplugtest.c                            |    2 
 .../qemuxml2argv-hostdev-spapr-vfio.args           |   16 +
 .../qemuxml2argv-hostdev-spapr-vfio.xml            |   76 +++++
 tests/qemuxml2argvtest.c                           |    8 +
 17 files changed, 591 insertions(+), 37 deletions(-)
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-spapr-vfio.args
 create mode 100644 tests/qemuxml2argvdata/qemuxml2argv-hostdev-spapr-vfio.xml

-- 
Signature




More information about the libvir-list mailing list