I've already posted a patch series that allows VFIO devices on spapr-pci-host-bridge instead of just on spapr-pci-vfio-host-bridge. However. it still didn't allow EEH on VFIO devices on the "normal" host bridge.
This series addresses that, making a number of cleanup along the way. Because of limitations in both the qemu code and the kernel VFIO+EEH interface, it only allows EEH if there is just one IOMMU group with VFIO devices on the host bridge. This isn't more limited than spapr-pci-vfio-host-bridge, because it also only supported a single VFIO group (although it didn't properly enforce that). David Gibson (14): vfio: Start adding VFIO/EEH interface spapr_pci: Switch EEH to vfio_eeh_op() interface spapr_pci: Expose and generalize spapr_phb_check_vfio_group() spapr_pci: Fold spapr_phb_vfio_eeh_configure() into spapr_pci code spapr_pci: Fold spapr_phb_vfio_eeh_reset() into spapr_pci code spapr_pci: Fold spapr_phb_vfio_eeh_get_state() into spapr_pci code spapr_pci: Fold spapr_phb_vfio_eeh_set_option() into spapr_pci code spapr_pci: Fold spapr_phb_vfio_eeh_configure() into spapr_pci code vfio: Expose a VFIO PCI device's group for EEH spapr_pci: Track guest Partitionable Endpoints spapr_pci: Allow EEH on spapr-pci-host-bridge spapr_pci: (Mostly) remove spapr-pci-vfio-host-bridge spapr_pci: Remove finish_realize hook vfio: Eliminate vfio_container_ioctl() hw/ppc/spapr_pci.c | 290 ++++++++++++++++++++++++++++++++++++-------- hw/ppc/spapr_pci_vfio.c | 245 +++---------------------------------- hw/vfio/Makefile.objs | 1 + hw/vfio/common.c | 45 ------- hw/vfio/eeh.c | 64 ++++++++++ hw/vfio/pci.c | 13 ++ include/hw/pci-host/spapr.h | 36 ++---- include/hw/vfio/vfio-eeh.h | 43 +++++++ include/hw/vfio/vfio.h | 3 - 9 files changed, 383 insertions(+), 357 deletions(-) create mode 100644 hw/vfio/eeh.c create mode 100644 include/hw/vfio/vfio-eeh.h -- 2.4.3