[PATCH] arm64: Fix the DMA mmap and get_sgtable API with DMA_ATTR_FORCE_CONTIGUOUS

Andrzej Hajda a.hajda at samsung.com
Fri May 5 03:01:43 PDT 2017


On 25.04.2017 20:00, Catalin Marinas wrote:
> 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
> separate patch.
>
> Fixes: 44176bb38fa4 ("arm64: Add support for DMA_ATTR_FORCE_CONTIGUOUS to IOMMU")
> Reported-by: Andrzej Hajda <a.hajda at samsung.com>
> Cc: Andrzej Hajda <a.hajda at samsung.com>
> Cc: Geert Uytterhoeven <geert+renesas at glider.be>
> Cc: Robin Murphy <robin.murphy at arm.com>
> Signed-off-by: Catalin Marinas <catalin.marinas at arm.com>

Tested-by: Andrzej Hajda <a.hajda at samsung.com>
Reviewed-by: Andrzej Hajda <a.hajda at samsung.com>

 --
Regards
Andrzej




More information about the linux-arm-kernel mailing list