From: Logan Gunthorpe Date: Fri, 8 Jul 2022 16:50:58 +0000 (-0600) Subject: iommu: Explicitly skip bus address marked segments in __iommu_map_sg() X-Git-Url: http://git.maquefel.me/?a=commitdiff_plain;h=c96321834b2f7aa442cf4c076f73d8273e622725;p=linux.git iommu: Explicitly skip bus address marked segments in __iommu_map_sg() In order to support PCI P2PDMA mappings with dma-iommu, explicitly skip any segments marked with sg_dma_mark_bus_address() in __iommu_map_sg(). These segments should not be mapped into the IOVA and will be handled separately in as subsequent patch for dma-iommu. Signed-off-by: Logan Gunthorpe Signed-off-by: Christoph Hellwig --- diff --git a/drivers/iommu/iommu.c b/drivers/iommu/iommu.c index 847ad47a2dfd3..2844a3e02a89e 100644 --- a/drivers/iommu/iommu.c +++ b/drivers/iommu/iommu.c @@ -2457,6 +2457,9 @@ static ssize_t __iommu_map_sg(struct iommu_domain *domain, unsigned long iova, len = 0; } + if (sg_is_dma_bus_address(sg)) + goto next; + if (len) { len += sg->length; } else { @@ -2464,6 +2467,7 @@ static ssize_t __iommu_map_sg(struct iommu_domain *domain, unsigned long iova, start = s_phys; } +next: if (++i < nents) sg = sg_next(sg); }