diff options
author | Christoph Hellwig <hch@lst.de> | 2020-02-21 21:35:05 +0100 |
---|---|---|
committer | Christoph Hellwig <hch@lst.de> | 2020-03-16 10:48:12 +0100 |
commit | 999a5d1203baa7cff00586361feae263ee3f23a5 (patch) | |
tree | b04c578a71b961394e7fe87567684bf0caefbe8b /kernel/dma | |
parent | dma-direct: make uncached_kernel_address more general (diff) | |
download | linux-999a5d1203baa7cff00586361feae263ee3f23a5.tar.xz linux-999a5d1203baa7cff00586361feae263ee3f23a5.zip |
dma-direct: provide a arch_dma_clear_uncached hook
This allows the arch code to reset the page tables to cached access when
freeing a dma coherent allocation that was set to uncached using
arch_dma_set_uncached.
Signed-off-by: Christoph Hellwig <hch@lst.de>
Reviewed-by: Robin Murphy <robin.murphy@arm.com>
Diffstat (limited to 'kernel/dma')
-rw-r--r-- | kernel/dma/direct.c | 2 |
1 files changed, 2 insertions, 0 deletions
diff --git a/kernel/dma/direct.c b/kernel/dma/direct.c index baf4e93735c3..412f560dc69f 100644 --- a/kernel/dma/direct.c +++ b/kernel/dma/direct.c @@ -231,6 +231,8 @@ void dma_direct_free_pages(struct device *dev, size_t size, void *cpu_addr, if (IS_ENABLED(CONFIG_DMA_REMAP) && is_vmalloc_addr(cpu_addr)) vunmap(cpu_addr); + else if (IS_ENABLED(CONFIG_ARCH_HAS_DMA_CLEAR_UNCACHED)) + arch_dma_clear_uncached(cpu_addr, size); dma_free_contiguous(dev, dma_direct_to_page(dev, dma_addr), size); } |