Messages in this thread Patch in this message | | | From | Christoph Hellwig <> | Subject | [PATCH 15/21] dma-iommu: don't remap contiguous allocations for coherent devices | Date | Wed, 13 Feb 2019 19:29:14 +0100 |
| |
There is no need to remap for pte attributes, or for a virtually contiguous address, so just don't do it.
Signed-off-by: Christoph Hellwig <hch@lst.de> --- drivers/iommu/dma-iommu.c | 9 ++++----- 1 file changed, 4 insertions(+), 5 deletions(-)
diff --git a/drivers/iommu/dma-iommu.c b/drivers/iommu/dma-iommu.c index ff6c6bf30c90..3199c9c81294 100644 --- a/drivers/iommu/dma-iommu.c +++ b/drivers/iommu/dma-iommu.c @@ -1049,10 +1049,10 @@ static void *iommu_dma_alloc(struct device *dev, size_t size, addr = iommu_dma_alloc_contiguous(dev, iosize, handle, gfp, attrs); - if (!addr) - return NULL; - page = virt_to_page(addr); + if (coherent || !addr) + return addr; + page = virt_to_page(addr); addr = dma_common_contiguous_remap(page, size, VM_USERMAP, prot, __builtin_return_address(0)); if (!addr) { @@ -1060,8 +1060,7 @@ static void *iommu_dma_alloc(struct device *dev, size_t size, return NULL; } - if (!coherent) - arch_dma_prep_coherent(page, iosize); + arch_dma_prep_coherent(page, iosize); } else { addr = iommu_dma_alloc_remap(dev, iosize, handle, gfp, attrs); } -- 2.20.1
| |