[PATCH 2/2] nvme-multipath: enable PCI P2PDMA for multipath devices

Christoph Hellwig hch at lst.de
Mon Mar 23 23:49:37 PDT 2026


On Mon, Mar 23, 2026 at 04:44:16PM -0700, Chaitanya Kulkarni wrote:
> NVMe multipath does not expose BLK_FEAT_PCI_P2PDMA on the head disk
> even when the underlying controller supports it.
> 
> Set BLK_FEAT_PCI_P2PDMA in nvme_mpath_alloc_disk() when the controller
> advertises P2PDMA support via ctrl->ops->supports_pci_p2pdma.
> 
> Signed-off-by: Chaitanya Kulkarni <kch at nvidia.com>
> Signed-off-by: Kiran Kumar Modukuri <kmodukuri at nvidia.com>

This signoff chain is wrong - you are both author and patch submitter,
so other signoffs should not appear.

Otherwise looks good:

> diff --git a/drivers/nvme/host/multipath.c b/drivers/nvme/host/multipath.c
> index ba00f0b72b85..c49fca43ef19 100644
> --- a/drivers/nvme/host/multipath.c
> +++ b/drivers/nvme/host/multipath.c
> @@ -737,6 +737,9 @@ int nvme_mpath_alloc_disk(struct nvme_ctrl *ctrl, struct nvme_ns_head *head)
>  		BLK_FEAT_POLL | BLK_FEAT_ATOMIC_WRITES;
>  	if (head->ids.csi == NVME_CSI_ZNS)
>  		lim.features |= BLK_FEAT_ZONED;
> +	if (ctrl->ops && ctrl->ops->supports_pci_p2pdma &&
> +	    ctrl->ops->supports_pci_p2pdma(ctrl))
> +		lim.features |= BLK_FEAT_PCI_P2PDMA;

This assumes all controllers support P2P, but we allow matching
over different transports.  So you'll need to do the same scheme
as for MD RAID that checks that every member supports P2P.




More information about the Linux-nvme mailing list