]> rtime.felk.cvut.cz Git - sojka/nv-tegra/linux-3.10.git/commitdiff
video: tegra: nvmap: clean dcache on write back op
authorSri Krishna chowdary <schowdary@nvidia.com>
Sun, 30 Mar 2014 18:13:36 +0000 (23:43 +0530)
committerTony Ly <tly@nvidia.com>
Wed, 7 May 2014 18:51:24 +0000 (11:51 -0700)
inner_clean_cache_all has been flushing dcache although
only clean is sufficient. Hence, call __clean_dcache_all
to clean the dcache and avoid overhead of invalidation.

Bug 1489709

Change-Id: Iaba8c117a96cd2fafceb3d9584e97ad4f9702eb3
Signed-off-by: Sri Krishna chowdary <schowdary@nvidia.com>
Reviewed-on: http://git-master/r/390072
(cherry picked from commit d80f731dde87aff64e1557d8b8c9f656421110dd)
Reviewed-on: http://git-master/r/405092
GVS: Gerrit_Virtual_Submit
Reviewed-by: Bharat Nihalani <bnihalani@nvidia.com>
drivers/video/tegra/nvmap/nvmap_mm.c
drivers/video/tegra/nvmap/nvmap_priv.h

index fd29f8b551a922d9122c132ed78402da3239a63a..aed33b399c8ecf053973561630fed32f21a06b48 100644 (file)
@@ -39,15 +39,16 @@ void inner_flush_cache_all(void)
 
 void inner_clean_cache_all(void)
 {
-#if defined(CONFIG_ARM64)
-       inner_flush_cache_all();
-#else
-#ifdef CONFIG_NVMAP_CACHE_MAINT_BY_SET_WAYS_ON_ONE_CPU
+#if defined(CONFIG_ARM64) && \
+       defined(CONFIG_NVMAP_CACHE_MAINT_BY_SET_WAYS_ON_ONE_CPU)
+       __clean_dcache_all(NULL);
+#elif defined(CONFIG_ARM64)
+       on_each_cpu(__clean_dcache_all, NULL, 1);
+#elif defined(CONFIG_NVMAP_CACHE_MAINT_BY_SET_WAYS_ON_ONE_CPU)
        v7_clean_kern_cache_all(NULL);
 #else
        on_each_cpu(v7_clean_kern_cache_all, NULL, 1);
 #endif
-#endif
 }
 
 void nvmap_flush_cache(struct page **pages, int numpages)
index 04b22f86d087469400ef0ed0bcd0110647fe6b1b..5b6b6f434db7db8c83eb5465bbfd4f61031ac7d7 100644 (file)
@@ -424,6 +424,7 @@ extern int inner_cache_maint_threshold;
 extern void v7_flush_kern_cache_all(void);
 extern void v7_clean_kern_cache_all(void *);
 extern void __flush_dcache_all(void *arg);
+extern void __clean_dcache_all(void *arg);
 
 void inner_flush_cache_all(void);
 void inner_clean_cache_all(void);