From: Logan Gunthorpe <logang@deltatee.com> To: linux-kernel@vger.kernel.org, linux-pci@vger.kernel.org, linux-nvme@lists.infradead.org, linux-rdma@vger.kernel.org Cc: Bjorn Helgaas <bhelgaas@google.com>, Christoph Hellwig <hch@lst.de>, Christian Koenig <Christian.Koenig@amd.com>, Jason Gunthorpe <jgg@mellanox.com>, Sagi Grimberg <sagi@grimberg.me>, Keith Busch <kbusch@kernel.org>, Jens Axboe <axboe@fb.com>, Dan Williams <dan.j.williams@intel.com>, Eric Pilmore <epilmore@gigaio.com>, Stephen Bates <sbates@raithlin.com>, Logan Gunthorpe <logang@deltatee.com> Subject: [PATCH v3 10/14] PCI/P2PDMA: Factor out __pci_p2pdma_map_sg() Date: Mon, 12 Aug 2019 11:30:44 -0600 [thread overview] Message-ID: <20190812173048.9186-11-logang@deltatee.com> (raw) In-Reply-To: <20190812173048.9186-1-logang@deltatee.com> Factor out the bus-only mapping into its own static function. No functional changes. The original pci_p2pdma_map_sg_attrs() will be used to decide whether this is an appropriate way to map. Link: https://lore.kernel.org/r/20190730163545.4915-11-logang@deltatee.com Signed-off-by: Logan Gunthorpe <logang@deltatee.com> Signed-off-by: Bjorn Helgaas <bhelgaas@google.com> --- drivers/pci/p2pdma.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index 1eec7a5ec27e..771b45605853 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -792,23 +792,9 @@ void pci_p2pmem_publish(struct pci_dev *pdev, bool publish) } EXPORT_SYMBOL_GPL(pci_p2pmem_publish); -/** - * pci_p2pdma_map_sg - map a PCI peer-to-peer scatterlist for DMA - * @dev: device doing the DMA request - * @sg: scatter list to map - * @nents: elements in the scatterlist - * @dir: DMA direction - * @attrs: DMA attributes passed to dma_map_sg() (if called) - * - * Scatterlists mapped with this function should be unmapped using - * pci_p2pdma_unmap_sg_attrs(). - * - * Returns the number of SG entries mapped or 0 on error. - */ -int pci_p2pdma_map_sg_attrs(struct device *dev, struct scatterlist *sg, - int nents, enum dma_data_direction dir, unsigned long attrs) +static int __pci_p2pdma_map_sg(struct pci_p2pdma_pagemap *p2p_pgmap, + struct device *dev, struct scatterlist *sg, int nents) { - struct pci_p2pdma_pagemap *p2p_pgmap; struct scatterlist *s; phys_addr_t paddr; int i; @@ -824,7 +810,6 @@ int pci_p2pdma_map_sg_attrs(struct device *dev, struct scatterlist *sg, return 0; for_each_sg(sg, s, nents, i) { - p2p_pgmap = to_p2p_pgmap(sg_page(s)->pgmap); paddr = sg_phys(s); s->dma_address = paddr - p2p_pgmap->bus_offset; @@ -833,6 +818,28 @@ int pci_p2pdma_map_sg_attrs(struct device *dev, struct scatterlist *sg, return nents; } + +/** + * pci_p2pdma_map_sg - map a PCI peer-to-peer scatterlist for DMA + * @dev: device doing the DMA request + * @sg: scatter list to map + * @nents: elements in the scatterlist + * @dir: DMA direction + * @attrs: DMA attributes passed to dma_map_sg() (if called) + * + * Scatterlists mapped with this function should be unmapped using + * pci_p2pdma_unmap_sg_attrs(). + * + * Returns the number of SG entries mapped or 0 on error. + */ +int pci_p2pdma_map_sg_attrs(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, unsigned long attrs) +{ + struct pci_p2pdma_pagemap *p2p_pgmap = + to_p2p_pgmap(sg_page(sg)->pgmap); + + return __pci_p2pdma_map_sg(p2p_pgmap, dev, sg, nents); +} EXPORT_SYMBOL_GPL(pci_p2pdma_map_sg_attrs); /** -- 2.20.1
WARNING: multiple messages have this Message-ID (diff)
From: logang@deltatee.com (Logan Gunthorpe) Subject: [PATCH v3 10/14] PCI/P2PDMA: Factor out __pci_p2pdma_map_sg() Date: Mon, 12 Aug 2019 11:30:44 -0600 [thread overview] Message-ID: <20190812173048.9186-11-logang@deltatee.com> (raw) In-Reply-To: <20190812173048.9186-1-logang@deltatee.com> Factor out the bus-only mapping into its own static function. No functional changes. The original pci_p2pdma_map_sg_attrs() will be used to decide whether this is an appropriate way to map. Link: https://lore.kernel.org/r/20190730163545.4915-11-logang at deltatee.com Signed-off-by: Logan Gunthorpe <logang at deltatee.com> Signed-off-by: Bjorn Helgaas <bhelgaas at google.com> --- drivers/pci/p2pdma.c | 41 ++++++++++++++++++++++++----------------- 1 file changed, 24 insertions(+), 17 deletions(-) diff --git a/drivers/pci/p2pdma.c b/drivers/pci/p2pdma.c index 1eec7a5ec27e..771b45605853 100644 --- a/drivers/pci/p2pdma.c +++ b/drivers/pci/p2pdma.c @@ -792,23 +792,9 @@ void pci_p2pmem_publish(struct pci_dev *pdev, bool publish) } EXPORT_SYMBOL_GPL(pci_p2pmem_publish); -/** - * pci_p2pdma_map_sg - map a PCI peer-to-peer scatterlist for DMA - * @dev: device doing the DMA request - * @sg: scatter list to map - * @nents: elements in the scatterlist - * @dir: DMA direction - * @attrs: DMA attributes passed to dma_map_sg() (if called) - * - * Scatterlists mapped with this function should be unmapped using - * pci_p2pdma_unmap_sg_attrs(). - * - * Returns the number of SG entries mapped or 0 on error. - */ -int pci_p2pdma_map_sg_attrs(struct device *dev, struct scatterlist *sg, - int nents, enum dma_data_direction dir, unsigned long attrs) +static int __pci_p2pdma_map_sg(struct pci_p2pdma_pagemap *p2p_pgmap, + struct device *dev, struct scatterlist *sg, int nents) { - struct pci_p2pdma_pagemap *p2p_pgmap; struct scatterlist *s; phys_addr_t paddr; int i; @@ -824,7 +810,6 @@ int pci_p2pdma_map_sg_attrs(struct device *dev, struct scatterlist *sg, return 0; for_each_sg(sg, s, nents, i) { - p2p_pgmap = to_p2p_pgmap(sg_page(s)->pgmap); paddr = sg_phys(s); s->dma_address = paddr - p2p_pgmap->bus_offset; @@ -833,6 +818,28 @@ int pci_p2pdma_map_sg_attrs(struct device *dev, struct scatterlist *sg, return nents; } + +/** + * pci_p2pdma_map_sg - map a PCI peer-to-peer scatterlist for DMA + * @dev: device doing the DMA request + * @sg: scatter list to map + * @nents: elements in the scatterlist + * @dir: DMA direction + * @attrs: DMA attributes passed to dma_map_sg() (if called) + * + * Scatterlists mapped with this function should be unmapped using + * pci_p2pdma_unmap_sg_attrs(). + * + * Returns the number of SG entries mapped or 0 on error. + */ +int pci_p2pdma_map_sg_attrs(struct device *dev, struct scatterlist *sg, + int nents, enum dma_data_direction dir, unsigned long attrs) +{ + struct pci_p2pdma_pagemap *p2p_pgmap = + to_p2p_pgmap(sg_page(sg)->pgmap); + + return __pci_p2pdma_map_sg(p2p_pgmap, dev, sg, nents); +} EXPORT_SYMBOL_GPL(pci_p2pdma_map_sg_attrs); /** -- 2.20.1
next prev parent reply other threads:[~2019-08-12 17:31 UTC|newest] Thread overview: 60+ messages / expand[flat|nested] mbox.gz Atom feed top 2019-08-12 17:30 [PATCH v3 00/14] PCI/P2PDMA: Support transactions that hit the host bridge Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-12 17:30 ` [PATCH v3 01/14] PCI/P2PDMA: Introduce private pagemap structure Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:06 ` Christoph Hellwig 2019-08-16 8:06 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 02/14] PCI/P2PDMA: Add provider's pci_dev to pci_p2pdma_pagemap struct Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:06 ` Christoph Hellwig 2019-08-16 8:06 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 03/14] PCI/P2PDMA: Add constants for map type results to upstream_bridge_distance() Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:08 ` Christoph Hellwig 2019-08-16 8:08 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 04/14] PCI/P2PDMA: Factor out __upstream_bridge_distance() Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:08 ` Christoph Hellwig 2019-08-16 8:08 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 05/14] PCI/P2PDMA: Apply host bridge whitelist for ACS Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:09 ` Christoph Hellwig 2019-08-16 8:09 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 06/14] PCI/P2PDMA: Factor out host_bridge_whitelist() Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:09 ` Christoph Hellwig 2019-08-16 8:09 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 07/14] PCI/P2PDMA: Whitelist some Intel host bridges Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:11 ` Christoph Hellwig 2019-08-16 8:11 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 08/14] PCI/P2PDMA: Add attrs argument to pci_p2pdma_map_sg() Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:12 ` Christoph Hellwig 2019-08-16 8:12 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 09/14] PCI/P2PDMA: Introduce pci_p2pdma_unmap_sg() Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:13 ` Christoph Hellwig 2019-08-16 8:13 ` Christoph Hellwig 2019-08-12 17:30 ` Logan Gunthorpe [this message] 2019-08-12 17:30 ` [PATCH v3 10/14] PCI/P2PDMA: Factor out __pci_p2pdma_map_sg() Logan Gunthorpe 2019-08-16 8:14 ` Christoph Hellwig 2019-08-16 8:14 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 11/14] PCI/P2PDMA: Store mapping method in an xarray Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:14 ` Christoph Hellwig 2019-08-16 8:14 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 12/14] PCI/P2PDMA: dma_map() requests that traverse the host bridge Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:15 ` Christoph Hellwig 2019-08-16 8:15 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 13/14] PCI/P2PDMA: Allow IOMMU for host bridge whitelist Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:16 ` Christoph Hellwig 2019-08-16 8:16 ` Christoph Hellwig 2019-08-12 17:30 ` [PATCH v3 14/14] PCI/P2PDMA: Update pci_p2pdma_distance_many() documentation Logan Gunthorpe 2019-08-12 17:30 ` Logan Gunthorpe 2019-08-16 8:16 ` Christoph Hellwig 2019-08-16 8:16 ` Christoph Hellwig 2019-08-16 13:45 ` [PATCH v3 00/14] PCI/P2PDMA: Support transactions that hit the host bridge Bjorn Helgaas 2019-08-16 13:45 ` Bjorn Helgaas
Reply instructions: You may reply publicly to this message via plain-text email using any one of the following methods: * Save the following mbox file, import it into your mail client, and reply-to-all from there: mbox Avoid top-posting and favor interleaved quoting: https://en.wikipedia.org/wiki/Posting_style#Interleaved_style * Reply using the --to, --cc, and --in-reply-to switches of git-send-email(1): git send-email \ --in-reply-to=20190812173048.9186-11-logang@deltatee.com \ --to=logang@deltatee.com \ --cc=Christian.Koenig@amd.com \ --cc=axboe@fb.com \ --cc=bhelgaas@google.com \ --cc=dan.j.williams@intel.com \ --cc=epilmore@gigaio.com \ --cc=hch@lst.de \ --cc=jgg@mellanox.com \ --cc=kbusch@kernel.org \ --cc=linux-kernel@vger.kernel.org \ --cc=linux-nvme@lists.infradead.org \ --cc=linux-pci@vger.kernel.org \ --cc=linux-rdma@vger.kernel.org \ --cc=sagi@grimberg.me \ --cc=sbates@raithlin.com \ /path/to/YOUR_REPLY https://kernel.org/pub/software/scm/git/docs/git-send-email.html * If your mail client supports setting the In-Reply-To header via mailto: links, try the mailto: linkBe sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes, see mirroring instructions on how to clone and mirror all data and code used by this external index.