Re: [RFC PATCH] nvme: enable PCI P2PDMA support for RDMA transport
From: Christoph Hellwig
Date: Wed Apr 01 2026 - 10:24:14 EST
On Wed, Apr 01, 2026 at 10:34:41AM +0000, Shivaji Kant wrote:
> Enable BLK_FEAT_PCI_P2PDMA on the NVMe when the underlying
> RDMA controller supports it.
>
> blk_stack_limits() currently filters out this feature bit because it is
> absent from BLK_FEAT_INHERIT_MASK. Manually re-assert the capability
> in nvme_update_ns_info() after the stacking operation.
This is really two different features/fixes and should be two patches.
Note that Chaitanya also has an outstanding patch about p2p on multipath,
so please work with him.
> Hardware reachability remains enforced by late-stage distance checks
> during DMA mapping.
I don't know what this is supposed to mean. Callers need to check the
reachability first before submitting P2P I/O.
> +static bool nvme_rdma_supports_pci_p2pdma(struct nvme_ctrl *ctrl)
> +{
> + struct nvme_rdma_ctrl *r_ctrl = to_rdma_ctrl(ctrl);
> + bool supported = false;
> +
> + if (r_ctrl && r_ctrl->device)
to_rdma_ctrl is a wrapper around container_of, so r_ctrl can't be
NULL for a non-NULL ctrl. ->device also should not NULL because it
is set up before namespaces are probed.
> + supported = ib_dma_pci_p2p_dma_supported(r_ctrl->device->dev);
> +
> + dev_dbg(ctrl->device, "PCI P2PDMA support result: %s\n",
> + supported ? "PASSED" : "FAILED (HW/Driver restriction)");
Overly long line, and screaming isn't really something we do in our
messages. We also don't do that debug message in PCI, so please just
drop it. IF you think this is important enough add a tracepoint in the
core code in a separate patch.