summaryrefslogtreecommitdiffstats
path: root/hw/pci
diff options
context:
space:
mode:
authorJens Freimann2019-10-29 12:48:58 +0100
committerMichael S. Tsirkin2019-10-29 23:55:26 +0100
commitc000a9bd06ea79ea5c2c1f894a47410be48c0cc1 (patch)
treedd7074c97bef984937b4e6e94669bda5a9fdb970 /hw/pci
parentpci: mark devices partially unplugged (diff)
downloadqemu-c000a9bd06ea79ea5c2c1f894a47410be48c0cc1.tar.gz
qemu-c000a9bd06ea79ea5c2c1f894a47410be48c0cc1.tar.xz
qemu-c000a9bd06ea79ea5c2c1f894a47410be48c0cc1.zip
pci: mark device having guest unplug request pending
Set pending_deleted_event in DeviceState for failover primary devices that were successfully unplugged by the Guest OS. Signed-off-by: Jens Freimann <jfreimann@redhat.com> Message-Id: <20191029114905.6856-5-jfreimann@redhat.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
Diffstat (limited to 'hw/pci')
-rw-r--r--hw/pci/pcie.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c
index 19363ff8ce..08718188bb 100644
--- a/hw/pci/pcie.c
+++ b/hw/pci/pcie.c
@@ -457,6 +457,7 @@ static void pcie_unplug_device(PCIBus *bus, PCIDevice *dev, void *opaque)
HotplugHandler *hotplug_ctrl = qdev_get_hotplug_handler(DEVICE(dev));
if (dev->partially_hotplugged) {
+ dev->qdev.pending_deleted_event = false;
return;
}
hotplug_handler_unplug(hotplug_ctrl, DEVICE(dev), &error_abort);
@@ -476,6 +477,8 @@ void pcie_cap_slot_unplug_request_cb(HotplugHandler *hotplug_dev,
return;
}
+ dev->pending_deleted_event = true;
+
/* In case user cancel the operation of multi-function hot-add,
* remove the function that is unexposed to guest individually,
* without interaction with guest.