From: Bjorn Helgaas <helgaas@kernel.org>
To: Leon Romanovsky <leon@kernel.org>
Cc: "Jens Axboe" <axboe@kernel.dk>, "Jason Gunthorpe" <jgg@ziepe.ca>,
"Robin Murphy" <robin.murphy@arm.com>,
"Joerg Roedel" <joro@8bytes.org>, "Will Deacon" <will@kernel.org>,
"Christoph Hellwig" <hch@lst.de>,
"Sagi Grimberg" <sagi@grimberg.me>,
"Keith Busch" <kbusch@kernel.org>,
"Bjorn Helgaas" <bhelgaas@google.com>,
"Logan Gunthorpe" <logang@deltatee.com>,
"Yishai Hadas" <yishaih@nvidia.com>,
"Shameer Kolothum" <shameerali.kolothum.thodi@huawei.com>,
"Kevin Tian" <kevin.tian@intel.com>,
"Alex Williamson" <alex.williamson@redhat.com>,
"Marek Szyprowski" <m.szyprowski@samsung.com>,
"Jérôme Glisse" <jglisse@redhat.com>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Jonathan Corbet" <corbet@lwn.net>,
linux-doc@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-block@vger.kernel.org, linux-rdma@vger.kernel.org,
iommu@lists.linux.dev, linux-nvme@lists.infradead.org,
linux-pci@vger.kernel.org, kvm@vger.kernel.org,
linux-mm@kvack.org
Subject: Re: [PATCH 01/18] PCI/P2PDMA: refactor the p2pdma mapping helpers
Date: Mon, 28 Oct 2024 15:59:02 -0500 [thread overview]
Message-ID: <20241028205902.GA1114413@bhelgaas> (raw)
In-Reply-To: <a4d93ca45f7ad09105a1cf347e6b6d6b6fb7e303.1730037276.git.leon@kernel.org>
Prefer subject capitalization in drivers/pci:
PCI/P2PDMA: Refactor ...
On Sun, Oct 27, 2024 at 04:21:01PM +0200, Leon Romanovsky wrote:
> From: Christoph Hellwig <hch@lst.de>
>
> The current scheme with a single helper to determine the P2P status
> and map a scatterlist segment force users to always use the map_sg
> helper to DMA map, which we're trying to get away from because they
> are very cache inefficient.
> ...
Acked-by: Bjorn Helgaas <bhelgaas@google.com>
A couple minor nits below.
> @@ -1412,28 +1411,29 @@ int iommu_dma_map_sg(struct device *dev, struct scatterlist *sg, int nents,
> size_t s_length = s->length;
> size_t pad_len = (mask - iova_len + 1) & mask;
>
> - if (is_pci_p2pdma_page(sg_page(s))) {
> - map = pci_p2pdma_map_segment(&p2pdma_state, dev, s);
> - switch (map) {
> - case PCI_P2PDMA_MAP_BUS_ADDR:
> - /*
> - * iommu_map_sg() will skip this segment as
> - * it is marked as a bus address,
> - * __finalise_sg() will copy the dma address
> - * into the output segment.
> - */
> - continue;
> - case PCI_P2PDMA_MAP_THRU_HOST_BRIDGE:
> - /*
> - * Mapping through host bridge should be
> - * mapped with regular IOVAs, thus we
> - * do nothing here and continue below.
> - */
> - break;
> - default:
> - ret = -EREMOTEIO;
> - goto out_restore_sg;
> - }
> + switch (pci_p2pdma_state(&p2pdma_state, dev, sg_page(s))) {
> + case PCI_P2PDMA_MAP_THRU_HOST_BRIDGE:
> + /*
> + * Mapping through host bridge should be mapped with
> + * regular IOVAs, thus we do nothing here and continue
> + * below.
> + */
I guess this is technically not a fall-through to the next case
because there's no executable code here, but since the comment
separates these two cases, I would find it easier to read if you
included the break here explicitly.
> + case PCI_P2PDMA_MAP_NONE:
> + break;
> +void __pci_p2pdma_update_state(struct pci_p2pdma_map_state *state,
> + struct device *dev, struct page *page);
> +
> +/**
> + * pci_p2pdma_state - check the P2P transfer state of a page
> + * @state: P2P state structure
Checkpatch complains about space before tab here.
> + * pci_p2pdma_bus_addr_map - map a PCI_P2PDMA_MAP_BUS_ADDR P2P transfer
> + * @state: P2P state structure
And here.
> @@ -462,34 +462,32 @@ int dma_direct_map_sg(struct device *dev, struct scatterlist *sgl, int nents,
> enum dma_data_direction dir, unsigned long attrs)
> {
> struct pci_p2pdma_map_state p2pdma_state = {};
> - enum pci_p2pdma_map_type map;
> struct scatterlist *sg;
> int i, ret;
>
> for_each_sg(sgl, sg, nents, i) {
> - if (is_pci_p2pdma_page(sg_page(sg))) {
> - map = pci_p2pdma_map_segment(&p2pdma_state, dev, sg);
> - switch (map) {
> - case PCI_P2PDMA_MAP_BUS_ADDR:
> - continue;
> - case PCI_P2PDMA_MAP_THRU_HOST_BRIDGE:
> - /*
> - * Any P2P mapping that traverses the PCI
> - * host bridge must be mapped with CPU physical
> - * address and not PCI bus addresses. This is
> - * done with dma_direct_map_page() below.
> - */
> - break;
> - default:
> - ret = -EREMOTEIO;
> + switch (pci_p2pdma_state(&p2pdma_state, dev, sg_page(sg))) {
> + case PCI_P2PDMA_MAP_THRU_HOST_BRIDGE:
> + /*
> + * Any P2P mapping that traverses the PCI host bridge
> + * must be mapped with CPU physical address and not PCI
> + * bus addresses.
> + */
Same fall-through comment.
> + case PCI_P2PDMA_MAP_NONE:
> + sg->dma_address = dma_direct_map_page(dev, sg_page(sg),
> + sg->offset, sg->length, dir, attrs);
> + if (sg->dma_address == DMA_MAPPING_ERROR) {
> + ret = -EIO;
> goto out_unmap;
> }
> - }
next prev parent reply other threads:[~2024-10-28 20:59 UTC|newest]
Thread overview: 34+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-10-27 14:21 [PATCH 00/18] Provide a new two step DMA mapping API Leon Romanovsky
2024-10-27 14:21 ` [PATCH 01/18] PCI/P2PDMA: refactor the p2pdma mapping helpers Leon Romanovsky
2024-10-28 18:10 ` Logan Gunthorpe
2024-10-28 20:59 ` Bjorn Helgaas [this message]
2024-10-29 16:48 ` Leon Romanovsky
2024-10-27 14:21 ` [PATCH 02/18] dma-mapping: move the PCI P2PDMA mapping helpers to pci-p2pdma.h Leon Romanovsky
2024-10-28 18:11 ` Logan Gunthorpe
2024-10-29 15:11 ` Bjorn Helgaas
2024-10-27 14:21 ` [PATCH 03/18] iommu: generalize the batched sync after map interface Leon Romanovsky
2024-10-27 14:21 ` [PATCH 04/18] dma-mapping: Add check if IOVA can be used Leon Romanovsky
2024-10-27 14:21 ` [PATCH 05/18] dma: Provide an interface to allow allocate IOVA Leon Romanovsky
2024-10-28 1:24 ` Baolu Lu
2024-10-28 6:37 ` Leon Romanovsky
2024-10-29 7:46 ` Christoph Hellwig
2024-10-28 4:24 ` Srinivasulu Thanneeru
2024-10-28 6:46 ` Leon Romanovsky
2024-10-27 14:21 ` [PATCH 06/18] iommu/dma: Factor out a iommu_dma_map_swiotlb helper Leon Romanovsky
2024-10-27 14:21 ` [PATCH 07/18] dma-mapping: Implement link/unlink ranges API Leon Romanovsky
2024-10-28 2:00 ` Baolu Lu
2024-10-28 6:22 ` Leon Romanovsky
2024-10-28 18:31 ` Leon Romanovsky
2024-10-27 14:21 ` [PATCH 08/18] dma-mapping: add a dma_need_unmap helper Leon Romanovsky
2024-10-27 14:21 ` [PATCH 09/18] docs: core-api: document the IOVA-based API Leon Romanovsky
2024-10-28 18:12 ` Logan Gunthorpe
2024-10-28 18:28 ` Leon Romanovsky
2024-10-27 14:21 ` [PATCH 10/18] mm/hmm: let users to tag specific PFN with DMA mapped bit Leon Romanovsky
2024-10-27 14:21 ` [PATCH 11/18] mm/hmm: provide generic DMA managing logic Leon Romanovsky
2024-10-27 14:21 ` [PATCH 12/18] RDMA/umem: Store ODP access mask information in PFN Leon Romanovsky
2024-10-27 14:21 ` [PATCH 13/18] RDMA/core: Convert UMEM ODP DMA mapping to caching IOVA and page linkage Leon Romanovsky
2024-10-27 14:21 ` [PATCH 14/18] RDMA/umem: Separate implicit ODP initialization from explicit ODP Leon Romanovsky
2024-10-27 14:21 ` [PATCH 15/18] vfio/mlx5: Explicitly use number of pages instead of allocated length Leon Romanovsky
2024-10-27 14:21 ` [PATCH 16/18] vfio/mlx5: Rewrite create mkey flow to allow better code reuse Leon Romanovsky
2024-10-27 14:21 ` [PATCH 17/18] vfio/mlx5: Explicitly store page list Leon Romanovsky
2024-10-27 14:21 ` [PATCH 18/18] vfio/mlx5: Convert vfio to use DMA link API Leon Romanovsky
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=20241028205902.GA1114413@bhelgaas \
--to=helgaas@kernel.org \
--cc=akpm@linux-foundation.org \
--cc=alex.williamson@redhat.com \
--cc=axboe@kernel.dk \
--cc=bhelgaas@google.com \
--cc=corbet@lwn.net \
--cc=hch@lst.de \
--cc=iommu@lists.linux.dev \
--cc=jgg@ziepe.ca \
--cc=jglisse@redhat.com \
--cc=joro@8bytes.org \
--cc=kbusch@kernel.org \
--cc=kevin.tian@intel.com \
--cc=kvm@vger.kernel.org \
--cc=leon@kernel.org \
--cc=linux-block@vger.kernel.org \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-mm@kvack.org \
--cc=linux-nvme@lists.infradead.org \
--cc=linux-pci@vger.kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=logang@deltatee.com \
--cc=m.szyprowski@samsung.com \
--cc=robin.murphy@arm.com \
--cc=sagi@grimberg.me \
--cc=shameerali.kolothum.thodi@huawei.com \
--cc=will@kernel.org \
--cc=yishaih@nvidia.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: link
Be 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.