aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCatalin Marinas <catalin.marinas@arm.com>2012-08-28 13:51:18 -0700
committerCatalin Marinas <catalin.marinas@arm.com>2012-09-04 22:41:17 +0100
commit7baff24640a87eb38a08a96439e657a009e5b422 (patch)
tree73ea441db380f2a67f8e992d9e46a9f021fd835d
parent0df52a49f307adb182ac46cafa58798e078487e0 (diff)
downloadlinux-aarch64-7baff24640a87eb38a08a96439e657a009e5b422.tar.gz
arm64: Add support for GFP_DMA32 in the DMA API implementation
If the device coherent mask is 32-bit or less, just pass GFP_DMA32 to the page allocator to benefit from ZONE_DMA32. Signed-off-by: Catalin Marinas <catalin.marinas@arm.com>
-rw-r--r--arch/arm64/mm/dma-mapping.c3
1 files changed, 3 insertions, 0 deletions
diff --git a/arch/arm64/mm/dma-mapping.c b/arch/arm64/mm/dma-mapping.c
index 5b197ec57cf..5eb244453a5 100644
--- a/arch/arm64/mm/dma-mapping.c
+++ b/arch/arm64/mm/dma-mapping.c
@@ -33,6 +33,9 @@ static void *arm64_swiotlb_alloc_coherent(struct device *dev, size_t size,
dma_addr_t *dma_handle, gfp_t flags,
struct dma_attrs *attrs)
{
+ if (IS_ENABLED(CONFIG_ZONE_DMA32) &&
+ dev->coherent_dma_mask <= DMA_BIT_MASK(32))
+ flags |= GFP_DMA32;
return swiotlb_alloc_coherent(dev, size, dma_handle, flags);
}