diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2017-04-25 15:42:31 +0100 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2017-05-05 11:41:35 +0100 |
commit | 92f66f84d9695d07adf9bc987bbcce4bf9b8e87c (patch) | |
tree | 47da8343526e429c2753ffe55072cef1972fef28 /drivers | |
parent | 2f9a0bec659700554744338bf780841f641cec40 (diff) | |
download | linux-92f66f84d9695d07adf9bc987bbcce4bf9b8e87c.tar.bz2 |
arm64: Fix the DMA mmap and get_sgtable API with DMA_ATTR_FORCE_CONTIGUOUS
While honouring the DMA_ATTR_FORCE_CONTIGUOUS on arm64 (commit
44176bb38fa4: "arm64: Add support for DMA_ATTR_FORCE_CONTIGUOUS to
IOMMU"), the existing uses of dma_mmap_attrs() and dma_get_sgtable()
have been broken by passing a physically contiguous vm_struct with an
invalid pages pointer through the common iommu API.
Since the coherent allocation with DMA_ATTR_FORCE_CONTIGUOUS uses CMA,
this patch simply reuses the existing swiotlb logic for mmap and
get_sgtable.
Note that the current implementation of get_sgtable (both swiotlb and
iommu) is broken if dma_declare_coherent_memory() is used since such
memory does not have a corresponding struct page. To be addressed in a
subsequent patch.
Fixes: 44176bb38fa4 ("arm64: Add support for DMA_ATTR_FORCE_CONTIGUOUS to IOMMU")
Reported-by: Andrzej Hajda <a.hajda@samsung.com>
Cc: Geert Uytterhoeven <geert+renesas@glider.be>
Acked-by: Robin Murphy <robin.murphy@arm.com>
Tested-by: Andrzej Hajda <a.hajda@samsung.com>
Reviewed-by: Andrzej Hajda <a.hajda@samsung.com>
Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
Diffstat (limited to 'drivers')
0 files changed, 0 insertions, 0 deletions