aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--drivers/nvme/host/pci.c5
1 files changed, 4 insertions, 1 deletions
diff --git a/drivers/nvme/host/pci.c b/drivers/nvme/host/pci.c
index f30031945ee4..c33bb201b884 100644
--- a/drivers/nvme/host/pci.c
+++ b/drivers/nvme/host/pci.c
@@ -1663,6 +1663,9 @@ static void nvme_map_cmb(struct nvme_dev *dev)
1663 struct pci_dev *pdev = to_pci_dev(dev->dev); 1663 struct pci_dev *pdev = to_pci_dev(dev->dev);
1664 int bar; 1664 int bar;
1665 1665
1666 if (dev->cmb_size)
1667 return;
1668
1666 dev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ); 1669 dev->cmbsz = readl(dev->bar + NVME_REG_CMBSZ);
1667 if (!dev->cmbsz) 1670 if (!dev->cmbsz)
1668 return; 1671 return;
@@ -2147,7 +2150,6 @@ static void nvme_pci_disable(struct nvme_dev *dev)
2147{ 2150{
2148 struct pci_dev *pdev = to_pci_dev(dev->dev); 2151 struct pci_dev *pdev = to_pci_dev(dev->dev);
2149 2152
2150 nvme_release_cmb(dev);
2151 pci_free_irq_vectors(pdev); 2153 pci_free_irq_vectors(pdev);
2152 2154
2153 if (pci_is_enabled(pdev)) { 2155 if (pci_is_enabled(pdev)) {
@@ -2595,6 +2597,7 @@ static void nvme_remove(struct pci_dev *pdev)
2595 nvme_stop_ctrl(&dev->ctrl); 2597 nvme_stop_ctrl(&dev->ctrl);
2596 nvme_remove_namespaces(&dev->ctrl); 2598 nvme_remove_namespaces(&dev->ctrl);
2597 nvme_dev_disable(dev, true); 2599 nvme_dev_disable(dev, true);
2600 nvme_release_cmb(dev);
2598 nvme_free_host_mem(dev); 2601 nvme_free_host_mem(dev);
2599 nvme_dev_remove_admin(dev); 2602 nvme_dev_remove_admin(dev);
2600 nvme_free_queues(dev, 0); 2603 nvme_free_queues(dev, 0);