ARM: tegra11x: Remove redundant cache flush
Bo Yan [Tue, 27 Nov 2012 22:40:33 +0000 (14:40 -0800)]
For CPU hotplug, since L1 cache is flushed when calling tegra_cpu_die,
there is no reason to do the same before that point.

Change-Id: I59adca195f8c0016819caa16a38602d886d1a10f
Signed-off-by: Bo Yan <byan@nvidia.com>
Reviewed-on: http://git-master/r/166701
Reviewed-by: Automatic_Commit_Validation_User
Reviewed-by: Antti Miettinen <amiettinen@nvidia.com>

arch/arm/kernel/smp.c

index 07897ac..0a93ea0 100644 (file)
@@ -184,6 +184,7 @@ int __cpuinit __cpu_disable(void)
         */
        percpu_timer_stop();
 
+#ifndef CONFIG_ARCH_TEGRA_11x_SOC
        /*
         * Flush user cache and TLB mappings, and then remove this CPU
         * from the vm mask set of all processes.
@@ -191,8 +192,16 @@ int __cpuinit __cpu_disable(void)
         * Caches are flushed to the Level of Unification Inner Shareable
         * to write-back dirty lines to unified caches shared by all CPUs.
         */
+
+       /*
+        * This step can be skipped over if we do the same thing later,
+        * which happens to be the case for tegra. We need to be careful
+        * here to make sure tegra_cpu_die always follows __cpu_disable
+        * in cpu shutdown sequence.
+        */
        flush_cache_louis();
        local_flush_tlb_all();
+#endif
 
        clear_tasks_mm_cpumask(cpu);