summaryrefslogtreecommitdiffstats
path: root/arch/arc/kernel/process.c
diff options
context:
space:
mode:
authorAlexey Brodkin <abrodkin@synopsys.com>2016-11-03 16:06:13 +0100
committerVineet Gupta <vgupta@synopsys.com>2016-11-03 18:01:07 +0100
commita79a812131b07254c09cf325ec68c0d05aaed0b5 (patch)
tree0b4d5bd96a3999319b2f4f6c31c558bcda35c1b0 /arch/arc/kernel/process.c
parentARC: [SMP] avoid overriding present cpumask (diff)
downloadlinux-a79a812131b07254c09cf325ec68c0d05aaed0b5.tar.xz
linux-a79a812131b07254c09cf325ec68c0d05aaed0b5.zip
arc: Implement arch-specific dma_map_ops.mmap
We used to use generic implementation of dma_map_ops.mmap which is dma_common_mmap() but that only worked for simpler cached mappings when vaddr = paddr. If a driver requests uncached DMA buffer kernel maps it to virtual address so that MMU gets involved and page uncached status takes into account. In that case usage of dma_common_mmap() lead to mapping of vaddr to vaddr for user-space which is obviously wrong. For more detals please refer to verbose explanation here [1]. So here we implement our own version of mmap() which always deals with dma_addr and maps underlying memory to user-space properly (note that DMA buffer mapped to user-space is always uncached because there's no way to properly manage cache from user-space). [1] https://lkml.org/lkml/2016/10/26/973 Reviewed-by: Catalin Marinas <catalin.marinas@arm.com> Cc: Marek Szyprowski <m.szyprowski@samsung.com> Cc: <stable@vger.kernel.org> #4.5+ Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com> Signed-off-by: Vineet Gupta <vgupta@synopsys.com>
Diffstat (limited to 'arch/arc/kernel/process.c')
0 files changed, 0 insertions, 0 deletions