]> www.infradead.org Git - nvme.git/commitdiff
nvme-pci: clean up CMBMSC when registering CMB fails
authorIcenowy Zheng <uwu@icenowy.me>
Wed, 12 Feb 2025 17:04:43 +0000 (01:04 +0800)
committerKeith Busch <kbusch@kernel.org>
Tue, 25 Feb 2025 00:21:24 +0000 (16:21 -0800)
CMB decoding should get disabled when the CMB block isn't successfully
registered to P2P DMA subsystem.

Clean up the CMBMSC register in this error handling codepath to disable
CMB decoding (and CMBLOC/CMBSZ registers).

Signed-off-by: Icenowy Zheng <uwu@icenowy.me>
Reviewed-by: Christoph Hellwig <hch@lst.de>
Signed-off-by: Keith Busch <kbusch@kernel.org>
drivers/nvme/host/pci.c

index 950289405ef283118e369d4fb9242a4f2be6e55e..218506e3dabea4cbf3c9176eac0fd2758648e557 100644 (file)
@@ -2003,6 +2003,7 @@ static void nvme_map_cmb(struct nvme_dev *dev)
        if (pci_p2pdma_add_resource(pdev, bar, size, offset)) {
                dev_warn(dev->ctrl.device,
                         "failed to register the CMB\n");
+               hi_lo_writeq(0, dev->bar + NVME_REG_CMBMSC);
                return;
        }