Re: [RFC PATCH] nvme: enable PCI P2PDMA support for RDMA transport
From: Pranjal Shrivastava
Date: Wed Apr 01 2026 - 13:57:25 EST
On Wed, Apr 01, 2026 at 04:17:06PM +0200, Christoph Hellwig wrote:
> 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.
>
Ack.
Shivaji, I believe this [1] is the patch Christoph's referring to.
> > 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.
>
+1, we should drop the log and add a TP if necessary.
Thanks,
Praan
[1] https://lore.kernel.org/all/20260323234416.46944-3-kch@xxxxxxxxxx/