diff options
| -rw-r--r-- | drivers/nvme/host/pci.c | 5 |
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); |
