diff options
author | Catalin Marinas <catalin.marinas@arm.com> | 2012-08-28 13:51:18 -0700 |
---|---|---|
committer | Catalin Marinas <catalin.marinas@arm.com> | 2012-09-04 22:41:17 +0100 |
commit | 7baff24640a87eb38a08a96439e657a009e5b422 (patch) | |
tree | 73ea441db380f2a67f8e992d9e46a9f021fd835d | |
parent | 0df52a49f307adb182ac46cafa58798e078487e0 (diff) | |
download | linux-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.c | 3 |
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); } |