summaryrefslogtreecommitdiffstats
path: root/arch/powerpc/kernel/dma-common.c
diff options
context:
space:
mode:
authorChristoph Hellwig <hch@lst.de>2019-07-26 09:26:40 +0200
committerChristoph Hellwig <hch@lst.de>2019-08-10 19:52:45 +0200
commit33dcb37cef741294b481f4d889a465b8091f11bf (patch)
tree129f9cde5b52cd77e04382c99ff0421aa862354b /arch/powerpc/kernel/dma-common.c
parentd8ad55538abe443919e20e0bb996561bca9cad84 (diff)
downloadlinux-33dcb37cef741294b481f4d889a465b8091f11bf.tar.bz2
dma-mapping: fix page attributes for dma_mmap_*
All the way back to introducing dma_common_mmap we've defaulted to mark the pages as uncached. But this is wrong for DMA coherent devices. Later on DMA_ATTR_WRITE_COMBINE also got incorrect treatment as that flag is only treated special on the alloc side for non-coherent devices. Introduce a new dma_pgprot helper that deals with the check for coherent devices so that only the remapping cases ever reach arch_dma_mmap_pgprot and we thus ensure no aliasing of page attributes happens, which makes the powerpc version of arch_dma_mmap_pgprot obsolete and simplifies the remaining ones. Note that this means arch_dma_mmap_pgprot is a bit misnamed now, but we'll phase it out soon. Fixes: 64ccc9c033c6 ("common: dma-mapping: add support for generic dma_mmap_* calls") Reported-by: Shawn Anastasio <shawn@anastas.io> Reported-by: Gavin Li <git@thegavinli.com> Signed-off-by: Christoph Hellwig <hch@lst.de> Acked-by: Catalin Marinas <catalin.marinas@arm.com> # arm64
Diffstat (limited to 'arch/powerpc/kernel/dma-common.c')
-rw-r--r--arch/powerpc/kernel/dma-common.c17
1 files changed, 0 insertions, 17 deletions
diff --git a/arch/powerpc/kernel/dma-common.c b/arch/powerpc/kernel/dma-common.c
deleted file mode 100644
index dc7ef6b17b69..000000000000
--- a/arch/powerpc/kernel/dma-common.c
+++ /dev/null
@@ -1,17 +0,0 @@
-// SPDX-License-Identifier: GPL-2.0-or-later
-/*
- * Contains common dma routines for all powerpc platforms.
- *
- * Copyright (C) 2019 Shawn Anastasio.
- */
-
-#include <linux/mm.h>
-#include <linux/dma-noncoherent.h>
-
-pgprot_t arch_dma_mmap_pgprot(struct device *dev, pgprot_t prot,
- unsigned long attrs)
-{
- if (!dev_is_dma_coherent(dev))
- return pgprot_noncached(prot);
- return prot;
-}