mirror of https://github.com/xemu-project/xemu.git
hw/block/nvme: fix invalid msix exclusive uninit
Commit1901b4967c
changed the nvme device from using a bar exclusive for MSI-x to sharing it on bar0. Unfortunately, the msix_uninit_exclusive_bar() call remains in nvme_exit() which causes havoc when the device is removed with, say, device_del. Fix this. Additionally, a subregion is added but it is not removed on exit which causes a reference to linger and the drive to never be unlocked. Fixes:1901b4967c
("hw/block/nvme: move msix table and pba to BAR 0") Signed-off-by: Klaus Jensen <k.jensen@samsung.com> Reviewed-by: Michael S. Tsirkin <mst@redhat.com> Signed-off-by: Peter Maydell <peter.maydell@linaro.org>
This commit is contained in:
parent
ffa090bc56
commit
5351fb7cb2
|
@ -6235,7 +6235,8 @@ static void nvme_exit(PCIDevice *pci_dev)
|
|||
if (n->pmr.dev) {
|
||||
host_memory_backend_set_mapped(n->pmr.dev, false);
|
||||
}
|
||||
msix_uninit_exclusive_bar(pci_dev);
|
||||
msix_uninit(pci_dev, &n->bar0, &n->bar0);
|
||||
memory_region_del_subregion(&n->bar0, &n->iomem);
|
||||
}
|
||||
|
||||
static Property nvme_props[] = {
|
||||
|
|
Loading…
Reference in New Issue