From 2745a72656e14e771d907fa5342e3e1cefc434a6 Mon Sep 17 00:00:00 2001 From: Klaus Jensen Date: Sun, 10 Nov 2024 14:04:27 +0100 Subject: [PATCH] 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 Signed-off-by: Klaus Jensen (cherry picked from commit 9162f101257639cc4c7e20f72f77268b1256dd79) Signed-off-by: Michael Tokarev --- hw/nvme/ctrl.c | 7 ++++++- 1 file changed, 6 insertions(+), 1 deletion(-) diff --git a/hw/nvme/ctrl.c b/hw/nvme/ctrl.c index fe822f63b3c..fc03a709799 100644 --- a/hw/nvme/ctrl.c +++ b/hw/nvme/ctrl.c @@ -8699,7 +8699,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); } -- 2.39.5