From: Tyrel Datwyler <tyr...@linux.vnet.ibm.com> This uses extension of existing EPOW interrupt/event mechanism to notify userspace tools like librtas/drmgr to handle in-guest configuration/cleanup operations in response to device_add/device_del.
Userspace tools that don't implement this extension will need to be run manually in response/advance of device_add/device_del, respectively. Signed-off-by: Tyrel Datwyler <tyr...@linux.vnet.ibm.com> Signed-off-by: Michael Roth <mdr...@linux.vnet.ibm.com> --- hw/ppc/spapr_pci.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/hw/ppc/spapr_pci.c b/hw/ppc/spapr_pci.c index 9284acd..77cd6a8 100644 --- a/hw/ppc/spapr_pci.c +++ b/hw/ppc/spapr_pci.c @@ -1121,14 +1121,18 @@ static void spapr_device_hotplug_remove(DeviceState *qdev, PCIDevice *dev) static int spapr_device_hotplug(DeviceState *qdev, PCIDevice *dev, PCIHotplugState state) { + int slot = PCI_SLOT(dev->devfn); + if (state == PCI_COLDPLUG_ENABLED) { return 0; } if (state == PCI_HOTPLUG_ENABLED) { spapr_device_hotplug_add(qdev, dev); + spapr_pci_hotplug_add_event(qdev, slot); } else { spapr_device_hotplug_remove(qdev, dev); + spapr_pci_hotplug_remove_event(qdev, slot); } return 0; -- 1.7.9.5