arc/cache: really do invalidate_dcache_all() even if IOC exists
authorAlexey Brodkin <abrodkin@synopsys.com>
Wed, 8 Jun 2016 04:57:19 +0000 (07:57 +0300)
committerAlexey Brodkin <abrodkin@synopsys.com>
Mon, 13 Jun 2016 12:38:05 +0000 (14:38 +0200)
invalidate_dcache_all() could be used in different use-cases
and what is especially important most of those cases won't be
related to DMAed data to or from peripherals, i.e. we'll be doing
invalidation of data used purely by CPU cores.

Given that IOC engine only snoops data that goes through DMA
we need to care ourselves about data used only by CPU cores
and so remove dependency on IOC from invalidate_dcache_all()
and always do real invalidation.

Signed-off-by: Alexey Brodkin <abrodkin@synopsys.com>
arch/arc/lib/cache.c

index d1fb66153771a607a56afde1bc67bbe95dab743d..a27499e02734d0fd476d0b67f489fb3ab2320bd0 100644 (file)
@@ -417,13 +417,10 @@ void flush_cache(unsigned long start, unsigned long size)
 
 void invalidate_dcache_all(void)
 {
-#ifdef CONFIG_ISA_ARCV2
-       if (!ioc_exists)
-#endif
-               __dc_entire_op(OP_INV);
+       __dc_entire_op(OP_INV);
 
 #ifdef CONFIG_ISA_ARCV2
-       if (slc_exists && !ioc_exists)
+       if (slc_exists)
                __slc_entire_op(OP_INV);
 #endif
 }