From: Shawn Lin Date: Wed, 8 Jul 2015 09:32:06 +0000 (+0800) Subject: arm64: dma-mapping: conditional skip map_sg by attrs X-Git-Tag: firefly_0821_release~3931 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=b80f2f689937dd657ee2587f3951991e19ea1803;p=firefly-linux-kernel-4.4.55.git arm64: dma-mapping: conditional skip map_sg by attrs Add if statement(DMA_ATTR_SKIP_CPU_SYNC) for __swiotlb_map_sg_attrs to skip invalidating each sg element Signed-off-by: Shawn Lin --- diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c index aff368c35d62..dc573621e41d 100644 --- a/arch/arm64/mm/dma-mapping.c +++ b/arch/arm64/mm/dma-mapping.c @@ -224,10 +224,11 @@ static int __swiotlb_map_sg_attrs(struct device *dev, struct scatterlist *sgl, int i, ret; ret = swiotlb_map_sg_attrs(dev, sgl, nelems, dir, attrs); - for_each_sg(sgl, sg, ret, i) - __dma_map_area(phys_to_virt(dma_to_phys(dev, sg->dma_address)), - sg->length, dir); - + if (!dma_get_attr(DMA_ATTR_SKIP_CPU_SYNC, attrs)) { + for_each_sg(sgl, sg, ret, i) + __dma_map_area(phys_to_virt(dma_to_phys(dev, sg->dma_address)), + sg->length, dir); + } return ret; }