aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKlaus Jensen <k.jensen@samsung.com>2024-11-10 14:04:27 +0100
committerKlaus Jensen <k.jensen@samsung.com>2024-12-03 07:28:27 +0100
commit9162f101257639cc4c7e20f72f77268b1256dd79 (patch)
tree4ec382ef397cc05785d69b8c5caa312f102dad91
parenteb22a064455aeebc105cc89bf77f48aa18b52938 (diff)
downloadqemu-9162f101257639cc4c7e20f72f77268b1256dd79.zip
qemu-9162f101257639cc4c7e20f72f77268b1256dd79.tar.gz
qemu-9162f101257639cc4c7e20f72f77268b1256dd79.tar.bz2
hw/nvme: fix msix_uninit with exclusive bar
Commit fa905f65c554 introduced a machine compatibility parameter to enable an exclusive bar for msix. It failed to account for this when cleaning up. Make sure that if an exclusive bar is enabled, we use the proper cleanup routine. Cc: qemu-stable@nongnu.org Fixes: fa905f65c554 ("hw/nvme: add machine compatibility parameter to enable msix exclusive bar") Reviewed-by: Jesper Wendel Devantier <foss@defmacro.it> Signed-off-by: Klaus Jensen <k.jensen@samsung.com>
-rw-r--r--hw/nvme/ctrl.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c
index 69bce20..13898d5 100644
--- a/hw/nvme/ctrl.c
+++ b/hw/nvme/ctrl.c
@@ -8904,7 +8904,12 @@ static void nvme_exit(PCIDevice *pci_dev)
pcie_sriov_pf_exit(pci_dev);
}
- msix_uninit(pci_dev, &n->bar0, &n->bar0);
+ if (n->params.msix_exclusive_bar && !pci_is_vf(pci_dev)) {
+ msix_uninit_exclusive_bar(pci_dev);
+ } else {
+ msix_uninit(pci_dev, &n->bar0, &n->bar0);
+ }
+
memory_region_del_subregion(&n->bar0, &n->iomem);
}