lists.openwall.net | lists / announce owl-users owl-dev john-users john-dev passwdqc-users yescrypt popa3d-users / oss-security kernel-hardening musl sabotage tlsify passwords / crypt-dev xvendor / Bugtraq Full-Disclosure linux-kernel linux-netdev linux-ext4 linux-hardening linux-cve-announce PHC | |
Open Source and information security mailing list archives
| ||
|
Date: Thu, 7 Apr 2022 09:47:07 -0600 From: Logan Gunthorpe <logang@...tatee.com> To: linux-kernel@...r.kernel.org, linux-nvme@...ts.infradead.org, linux-block@...r.kernel.org, linux-pci@...r.kernel.org, linux-mm@...ck.org, iommu@...ts.linux-foundation.org Cc: Stephen Bates <sbates@...thlin.com>, Christoph Hellwig <hch@....de>, Dan Williams <dan.j.williams@...el.com>, Jason Gunthorpe <jgg@...pe.ca>, Christian König <christian.koenig@....com>, John Hubbard <jhubbard@...dia.com>, Don Dutile <ddutile@...hat.com>, Matthew Wilcox <willy@...radead.org>, Daniel Vetter <daniel.vetter@...ll.ch>, Jakowski Andrzej <andrzej.jakowski@...el.com>, Minturn Dave B <dave.b.minturn@...el.com>, Jason Ekstrand <jason@...kstrand.net>, Dave Hansen <dave.hansen@...ux.intel.com>, Xiong Jianxin <jianxin.xiong@...el.com>, Bjorn Helgaas <helgaas@...nel.org>, Ira Weiny <ira.weiny@...el.com>, Robin Murphy <robin.murphy@....com>, Martin Oliveira <martin.oliveira@...eticom.com>, Chaitanya Kulkarni <ckulkarnilinux@...il.com>, Ralph Campbell <rcampbell@...dia.com>, Logan Gunthorpe <logang@...tatee.com>, Jason Gunthorpe <jgg@...dia.com>, Max Gurtovoy <mgurtovoy@...dia.com> Subject: [PATCH v6 11/21] RDMA/core: introduce ib_dma_pci_p2p_dma_supported() Introduce the helper function ib_dma_pci_p2p_dma_supported() to check if a given ib_device can be used in P2PDMA transfers. This ensures the ib_device is not using virt_dma and also that the underlying dma_device supports P2PDMA. Use the new helper in nvme-rdma to replace the existing check for ib_uses_virt_dma(). Adding the dma_pci_p2pdma_supported() check allows switching away from pci_p2pdma_[un]map_sg(). Signed-off-by: Logan Gunthorpe <logang@...tatee.com> Reviewed-by: Jason Gunthorpe <jgg@...dia.com> Reviewed-by: Max Gurtovoy <mgurtovoy@...dia.com> --- drivers/nvme/target/rdma.c | 2 +- include/rdma/ib_verbs.h | 11 +++++++++++ 2 files changed, 12 insertions(+), 1 deletion(-) diff --git a/drivers/nvme/target/rdma.c b/drivers/nvme/target/rdma.c index 2fab0b219b25..12258f87ccc8 100644 --- a/drivers/nvme/target/rdma.c +++ b/drivers/nvme/target/rdma.c @@ -415,7 +415,7 @@ static int nvmet_rdma_alloc_rsp(struct nvmet_rdma_device *ndev, if (ib_dma_mapping_error(ndev->device, r->send_sge.addr)) goto out_free_rsp; - if (!ib_uses_virt_dma(ndev->device)) + if (ib_dma_pci_p2p_dma_supported(ndev->device)) r->req.p2p_client = &ndev->device->dev; r->send_sge.length = sizeof(*r->req.cqe); r->send_sge.lkey = ndev->pd->local_dma_lkey; diff --git a/include/rdma/ib_verbs.h b/include/rdma/ib_verbs.h index 69d883f7fb41..79609ab73014 100644 --- a/include/rdma/ib_verbs.h +++ b/include/rdma/ib_verbs.h @@ -4003,6 +4003,17 @@ static inline bool ib_uses_virt_dma(struct ib_device *dev) return IS_ENABLED(CONFIG_INFINIBAND_VIRT_DMA) && !dev->dma_device; } +/* + * Check if a IB device's underlying DMA mapping supports P2PDMA transfers. + */ +static inline bool ib_dma_pci_p2p_dma_supported(struct ib_device *dev) +{ + if (ib_uses_virt_dma(dev)) + return false; + + return dma_pci_p2pdma_supported(dev->dma_device); +} + /** * ib_dma_mapping_error - check a DMA addr for error * @dev: The device for which the dma_addr was created -- 2.30.2
Powered by blists - more mailing lists