]> git.ipfire.org Git - thirdparty/qemu.git/commitdiff
hw/nvme: fix msix_uninit with exclusive bar
authorKlaus Jensen <k.jensen@samsung.com>
Sun, 10 Nov 2024 13:04:27 +0000 (14:04 +0100)
committerMichael Tokarev <mjt@tls.msk.ru>
Tue, 3 Dec 2024 17:00:44 +0000 (20:00 +0300)
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>
(cherry picked from commit 9162f101257639cc4c7e20f72f77268b1256dd79)
Signed-off-by: Michael Tokarev <mjt@tls.msk.ru>
hw/nvme/ctrl.c

index fe822f63b3c41ec647780569a6a4576f9d6369c2..fc03a7097993130e6cc9da788bbd7fd437aa7468 100644 (file)
@@ -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);
 }