These patches are based on latest spapr-hotplug-pci patches, and can also be obtained from:
https://github.com/mdroth/qemu/commits/spapr-hotplug-phb These patches implement support for hotplug/unplug of PCI host-bridges. The main use cases are: - allowing for VFIO PCI hotplug for host kernels that still require a 1:1 mapping between guest PHB/TCE table and an iommu group (a requirement that will be relaxed with Alexey Kardashevskiy's VFIO rework for DDW support) - allocating new PHBs/TCE tables for hotplugging/distributing VFIO devices that have different NUMA affinities associated with them for performance reason - expanding hotplug capacity for passthrough/emulated PCI devices With these patches we support the following: (qemu) device_add spapr-pci-host-bridge,index=2,id=phb2 (qemu) device_add virtio-net-pci,id=hp2.0,bus=phb2.0 (qemu) device_del hp2.0 (qemu) device_del phb2 Automatic add/remove of PHBs based on EPOW event mechanism require updated versions of powerpc-utils, rtas_errd, and librtas. Patches are forthcoming and will be available in future versions, but for now we can add them manually by executing the following in the guest after/before hotplug/unplug, respectively: # add PHB drmgr -c PHB -s "PHB 2" -a -n # remove PHB drmgr -c PHB -s "PHB 2" -r -n Feedback/comments are very much appreciated. hw/core/qdev.c | 24 ++++++++++++------ hw/pci/pci.c | 33 +++++++++++++++++++++++++ hw/ppc/spapr.c | 183 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++- hw/ppc/spapr_drc.c | 1 + hw/ppc/spapr_events.c | 5 ++++ hw/ppc/spapr_iommu.c | 1 + hw/ppc/spapr_pci.c | 66 ++++++++++++++++++++++++++++++++++++++++++++++--- include/hw/pci-host/spapr.h | 3 ++- include/hw/pci/pci.h | 3 +++ include/hw/ppc/spapr.h | 1 + include/hw/qdev-core.h | 3 +++ 11 files changed, 310 insertions(+), 13 deletions(-)