diff options
| author | Alexey Brodkin <[email protected]> | 2016-11-03 15:06:13 +0000 |
|---|---|---|
| committer | Vineet Gupta <[email protected]> | 2016-11-03 17:01:07 +0000 |
| commit | a79a812131b07254c09cf325ec68c0d05aaed0b5 (patch) | |
| tree | 0b4d5bd96a3999319b2f4f6c31c558bcda35c1b0 /drivers/fpga/altera-fpga2sdram.c | |
| parent | ARC: [SMP] avoid overriding present cpumask (diff) | |
| download | kernel-a79a812131b07254c09cf325ec68c0d05aaed0b5.tar.gz kernel-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 <[email protected]>
Cc: Marek Szyprowski <[email protected]>
Cc: <[email protected]> #4.5+
Signed-off-by: Alexey Brodkin <[email protected]>
Signed-off-by: Vineet Gupta <[email protected]>
Diffstat (limited to 'drivers/fpga/altera-fpga2sdram.c')
0 files changed, 0 insertions, 0 deletions
