[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
[PULL 13/22] pci: do not respond config requests after PCI device eject
From: |
Michael S. Tsirkin |
Subject: |
[PULL 13/22] pci: do not respond config requests after PCI device eject |
Date: |
Thu, 3 Aug 2023 18:21:26 -0400 |
From: Yuri Benditovich <yuri.benditovich@daynix.com>
Fixes: https://bugzilla.redhat.com/show_bug.cgi?id=2224964
In migration with VF failover, Windows guest and ACPI hot
unplug we do not need to satisfy config requests, otherwise
the guest immediately detects the device and brings up its
driver. Many network VF's are stuck on the guest PCI bus after
the migration.
Signed-off-by: Yuri Benditovich <yuri.benditovich@daynix.com>
Message-Id: <20230728084049.191454-1-yuri.benditovich@daynix.com>
Reviewed-by: Michael S. Tsirkin <mst@redhat.com>
Signed-off-by: Michael S. Tsirkin <mst@redhat.com>
---
hw/pci/pci_host.c | 15 +++++++++++++--
1 file changed, 13 insertions(+), 2 deletions(-)
diff --git a/hw/pci/pci_host.c b/hw/pci/pci_host.c
index 7af8afdcbe..a18aa0a8d4 100644
--- a/hw/pci/pci_host.c
+++ b/hw/pci/pci_host.c
@@ -62,6 +62,17 @@ static void pci_adjust_config_limit(PCIBus *bus, uint32_t
*limit)
}
}
+static bool is_pci_dev_ejected(PCIDevice *pci_dev)
+{
+ /*
+ * device unplug was requested and the guest acked it,
+ * so we stop responding config accesses even if the
+ * device is not deleted (failover flow)
+ */
+ return pci_dev && pci_dev->partially_hotplugged &&
+ !pci_dev->qdev.pending_deleted_event;
+}
+
void pci_host_config_write_common(PCIDevice *pci_dev, uint32_t addr,
uint32_t limit, uint32_t val, uint32_t len)
{
@@ -75,7 +86,7 @@ void pci_host_config_write_common(PCIDevice *pci_dev,
uint32_t addr,
* allowing direct removal of unexposed functions.
*/
if ((pci_dev->qdev.hotplugged && !pci_get_function_0(pci_dev)) ||
- !pci_dev->has_power) {
+ !pci_dev->has_power || is_pci_dev_ejected(pci_dev)) {
return;
}
@@ -100,7 +111,7 @@ uint32_t pci_host_config_read_common(PCIDevice *pci_dev,
uint32_t addr,
* allowing direct removal of unexposed functions.
*/
if ((pci_dev->qdev.hotplugged && !pci_get_function_0(pci_dev)) ||
- !pci_dev->has_power) {
+ !pci_dev->has_power || is_pci_dev_ejected(pci_dev)) {
return ~0x0;
}
--
MST
- [PULL 03/22] virtio-iommu: Standardize granule extraction and formatting, (continued)
- [PULL 03/22] virtio-iommu: Standardize granule extraction and formatting, Michael S. Tsirkin, 2023/08/03
- [PULL 04/22] hw/virtio: Add a protection against duplicate vu_scmi_stop calls, Michael S. Tsirkin, 2023/08/03
- [PULL 05/22] tests: acpi: x86: whitelist expected blobs, Michael S. Tsirkin, 2023/08/03
- [PULL 06/22] x86: acpi: workaround Windows not handling name references in Package properly, Michael S. Tsirkin, 2023/08/03
- [PULL 08/22] tests: acpi: whitelist expected blobs, Michael S. Tsirkin, 2023/08/03
- [PULL 07/22] tests: acpi: x86: update expected blobs, Michael S. Tsirkin, 2023/08/03
- [PULL 09/22] acpi: x86: remove _ADR on host bridges, Michael S. Tsirkin, 2023/08/03
- [PULL 10/22] tests: acpi: update expected blobs, Michael S. Tsirkin, 2023/08/03
- [PULL 11/22] hw/virtio: qmp: add RING_RESET to 'info virtio-status', Michael S. Tsirkin, 2023/08/03
- [PULL 12/22] virtio: Fix packed virtqueue used_idx mask, Michael S. Tsirkin, 2023/08/03
- [PULL 13/22] pci: do not respond config requests after PCI device eject,
Michael S. Tsirkin <=
- [PULL 14/22] vhost: fix the fd leak, Michael S. Tsirkin, 2023/08/03
- [PULL 15/22] hw/i386/intel_iommu: Fix trivial endianness problems, Michael S. Tsirkin, 2023/08/03
- [PULL 16/22] hw/i386/intel_iommu: Fix endianness problems related to VTD_IR_TableEntry, Michael S. Tsirkin, 2023/08/03
- [PULL 17/22] hw/i386/intel_iommu: Fix struct VTDInvDescIEC on big endian hosts, Michael S. Tsirkin, 2023/08/03
- [PULL 18/22] hw/i386/intel_iommu: Fix index calculation in vtd_interrupt_remap_msi(), Michael S. Tsirkin, 2023/08/03
- [PULL 19/22] hw/i386/x86-iommu: Fix endianness issue in x86_iommu_irq_to_msi_message(), Michael S. Tsirkin, 2023/08/03
- [PULL 20/22] include/hw/i386/x86-iommu: Fix struct X86IOMMU_MSIMessage for big endian hosts, Michael S. Tsirkin, 2023/08/03