]> git.ipfire.org Git - thirdparty/kernel/stable.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)
committerGreg Kroah-Hartman <gregkh@linuxfoundation.org>
Thu, 10 Apr 2025 12:39:28 +0000 (14:39 +0200)
[ Upstream commit 6a3572e10f740acd48e2713ef37e92186a3ce5e8 ]

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>
Signed-off-by: Sasha Levin <sashal@kernel.org>
drivers/nvme/host/pci.c

index 1d3205f08af8470421a8e288d3f1cb8c12d04e83..84c0611697a9b9c708b1619e535cd63356d35fb3 100644 (file)
@@ -2005,6 +2005,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;
        }