diff options
author | Jens Freimann <jfreimann@redhat.com> | 2019-10-29 12:48:57 +0100 |
---|---|---|
committer | Michael S. Tsirkin <mst@redhat.com> | 2019-10-29 18:55:26 -0400 |
commit | a99c4da9fc2a39847cfebbc0c6802ee122dcca39 (patch) | |
tree | 5e1653b62c77ef5ee261635c7a0b587acebd9cff | |
parent | 4f5b6a05a4e76892d8d03838a36aca735e9bcefb (diff) | |
download | qemu-a99c4da9fc2a39847cfebbc0c6802ee122dcca39.zip qemu-a99c4da9fc2a39847cfebbc0c6802ee122dcca39.tar.gz qemu-a99c4da9fc2a39847cfebbc0c6802ee122dcca39.tar.bz2 |
pci: mark devices partially unplugged
Only the guest unplug request was triggered. This is needed for
the failover feature. In case of a failed migration we need to
plug the device back to the guest.
Signed-off-by: Jens Freimann <jfreimann@redhat.com>
Message-Id: <20191029114905.6856-4-jfreimann@redhat.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
-rw-r--r-- | hw/pci/pcie.c | 3 | ||||
-rw-r--r-- | include/hw/pci/pci.h | 1 |
2 files changed, 4 insertions, 0 deletions
diff --git a/hw/pci/pcie.c b/hw/pci/pcie.c index a6beb56..19363ff 100644 --- a/hw/pci/pcie.c +++ b/hw/pci/pcie.c @@ -456,6 +456,9 @@ static void pcie_unplug_device(PCIBus *bus, PCIDevice *dev, void *opaque) { HotplugHandler *hotplug_ctrl = qdev_get_hotplug_handler(DEVICE(dev)); + if (dev->partially_hotplugged) { + return; + } hotplug_handler_unplug(hotplug_ctrl, DEVICE(dev), &error_abort); object_unparent(OBJECT(dev)); } diff --git a/include/hw/pci/pci.h b/include/hw/pci/pci.h index 69d1f02..db75c6d 100644 --- a/include/hw/pci/pci.h +++ b/include/hw/pci/pci.h @@ -265,6 +265,7 @@ typedef struct PCIReqIDCache PCIReqIDCache; struct PCIDevice { DeviceState qdev; + bool partially_hotplugged; /* PCI config space */ uint8_t *config; |