author: Arnd Bergmann <arnd@arndb.de> 2023-03-27 14:13:07 +0200
committer: Emil Renner Berthing <emil.renner.berthing@canonical.com> 2023-07-20 20:53:34 +0200
commit: 92251112c9fcf0b3767c9e5a0342b51207bd1875
parent: 8a3fdf2f9d624fa2bf0663f1e72010c7427d7d37
Commit Summary:
Diffstat:
1 file changed, 5 insertions, 1 deletion
diff --git a/arch/mips/mm/dma-noncoherent.c b/arch/mips/mm/dma-noncoherent.c
index 3c4fc97b9f39..b4350faf4f1e 100644
--- a/arch/mips/mm/dma-noncoherent.c
+++ b/arch/mips/mm/dma-noncoherent.c
@@ -65,7 +65,11 @@ static inline void dma_sync_virt_for_device(void *addr, size_t size,
dma_cache_inv((unsigned long)addr, size);
break;
case DMA_BIDIRECTIONAL:
- dma_cache_wback_inv((unsigned long)addr, size);
+ if (IS_ENABLED(CONFIG_ARCH_HAS_SYNC_DMA_FOR_CPU) &&
+ cpu_needs_post_dma_flush())
+ dma_cache_wback((unsigned long)addr, size);
+ else
+ dma_cache_wback_inv((unsigned long)addr, size);
break;
default:
BUG();