diff options
author | Jens Freimann | 2019-10-29 12:48:58 +0100 |
---|---|---|
committer | Michael S. Tsirkin | 2019-10-29 23:55:26 +0100 |
commit | c000a9bd06ea79ea5c2c1f894a47410be48c0cc1 (patch) | |
tree | dd7074c97bef984937b4e6e94669bda5a9fdb970 /hw/pci | |
parent | pci: mark devices partially unplugged (diff) | |
download | qemu-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.c | 3 |
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. |