ARM: cpu hotplug: remove majority of cache flushing from platforms
authorRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 18 Apr 2013 17:15:44 +0000 (18:15 +0100)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Thu, 18 Apr 2013 19:08:04 +0000 (20:08 +0100)
Remove the majority of cache flushing calls from the individual platform
files.  This is now handled by the core code.

Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
12 files changed:
arch/arm/mach-exynos/hotplug.c
arch/arm/mach-highbank/hotplug.c
arch/arm/mach-imx/hotplug.c
arch/arm/mach-msm/hotplug.c
arch/arm/mach-omap2/omap-hotplug.c
arch/arm/mach-prima2/hotplug.c
arch/arm/mach-realview/hotplug.c
arch/arm/mach-shmobile/smp-sh73a0.c
arch/arm/mach-spear13xx/hotplug.c
arch/arm/mach-tegra/hotplug.c
arch/arm/mach-ux500/hotplug.c
arch/arm/mach-vexpress/hotplug.c

index c3f825b279473447ebbb06fb0fc4c2ab168b6987..af90cfa2f826e80f9045976a17f824a854b817a8 100644 (file)
@@ -28,7 +28,6 @@ static inline void cpu_enter_lowpower_a9(void)
 {
        unsigned int v;
 
-       flush_cache_all();
        asm volatile(
        "       mcr     p15, 0, %1, c7, c5, 0\n"
        "       mcr     p15, 0, %1, c7, c10, 4\n"
index f30c528433967e43b1f1afa1050c13feefbbe914..35dd42e216856a03047635ddc249e75b5201fd69 100644 (file)
@@ -15,8 +15,6 @@
  */
 #include <linux/kernel.h>
 
-#include <asm/cacheflush.h>
-
 #include "core.h"
 #include "sysregs.h"
 
@@ -28,8 +26,6 @@ extern void secondary_startup(void);
  */
 void __ref highbank_cpu_die(unsigned int cpu)
 {
-       flush_cache_all();
-
        highbank_set_cpu_jump(cpu, phys_to_virt(0));
        highbank_set_core_pwr();
 
index 361a253e2b63c1abbce953df6745c1fdac8812d7..5e91112dcbee8eddcb32ce228f82e3e8f6ab6896 100644 (file)
@@ -11,7 +11,6 @@
  */
 
 #include <linux/errno.h>
-#include <asm/cacheflush.h>
 #include <asm/cp15.h>
 
 #include "common.h"
@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void)
 {
        unsigned int v;
 
-       flush_cache_all();
        asm volatile(
                "mcr    p15, 0, %1, c7, c5, 0\n"
        "       mcr     p15, 0, %1, c7, c10, 4\n"
index 750446feb444083aca6c39bb11e8067681c61f35..326a87261f9ac039248bd33f77f516f8c3fef87b 100644 (file)
 #include <linux/errno.h>
 #include <linux/smp.h>
 
-#include <asm/cacheflush.h>
 #include <asm/smp_plat.h>
 
 #include "common.h"
 
 static inline void cpu_enter_lowpower(void)
 {
-       /* Just flush the cache. Changing the coherency is not yet
-        * available on msm. */
-       flush_cache_all();
 }
 
 static inline void cpu_leave_lowpower(void)
index e712d1725a8bc80d5c0074cce5500c2683bc1109..ceb30a59bf28271002bf7bf21412366a7ae533e5 100644 (file)
@@ -35,9 +35,6 @@ void __ref omap4_cpu_die(unsigned int cpu)
        unsigned int boot_cpu = 0;
        void __iomem *base = omap_get_wakeupgen_base();
 
-       flush_cache_all();
-       dsb();
-
        /*
         * we're ready for shutdown now, so do it
         */
index f4b17cbababd49f42c98840107d8508a72e0199a..0ab2f8bae28e2aa9fce403175fdc87e278bc766a 100644 (file)
 #include <linux/errno.h>
 #include <linux/smp.h>
 
-#include <asm/cacheflush.h>
 #include <asm/smp_plat.h>
 
 static inline void platform_do_lowpower(unsigned int cpu)
 {
-       flush_cache_all();
-
        /* we put the platform to just WFI */
        for (;;) {
                __asm__ __volatile__("dsb\n\t" "wfi\n\t"
index 53818e5cd3add8b36cb758676760ef83299af78e..ac22dd41b13509e3195a21bbbeef0a24bdeb498c 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/errno.h>
 #include <linux/smp.h>
 
-#include <asm/cacheflush.h>
 #include <asm/cp15.h>
 #include <asm/smp_plat.h>
 
@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void)
 {
        unsigned int v;
 
-       flush_cache_all();
        asm volatile(
        "       mcr     p15, 0, %1, c7, c5, 0\n"
        "       mcr     p15, 0, %1, c7, c10, 4\n"
index acb46a94ccdfb8ec967ed5e52e5a9593f531c414..2f1ef1bc805d981785f59bc0dbc0f15a8bb24a74 100644 (file)
@@ -119,14 +119,6 @@ static int sh73a0_cpu_kill(unsigned int cpu)
 
 static void sh73a0_cpu_die(unsigned int cpu)
 {
-       /*
-        * The ARM MPcore does not issue a cache coherency request for the L1
-        * cache when powering off single CPUs. We must take care of this and
-        * further caches.
-        */
-       dsb();
-       flush_cache_all();
-
        /* Set power off mode. This takes the CPU out of the MP cluster */
        scu_power_mode(scu_base_addr(), SCU_PM_POWEROFF);
 
index a7d2dd11a4f2aef8e163c0a76d76f2122653bfc9..d97749c642ce67b8bf721dc61461b5106594a3f3 100644 (file)
@@ -13,7 +13,6 @@
 #include <linux/kernel.h>
 #include <linux/errno.h>
 #include <linux/smp.h>
-#include <asm/cacheflush.h>
 #include <asm/cp15.h>
 #include <asm/smp_plat.h>
 
@@ -21,7 +20,6 @@ static inline void cpu_enter_lowpower(void)
 {
        unsigned int v;
 
-       flush_cache_all();
        asm volatile(
        "       mcr     p15, 0, %1, c7, c5, 0\n"
        "       dsb\n"
index 1fb9915f7895107efbae6ae53cd8260e0d73e06b..e8323bc95770d0e951195929aced176a1889f449 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/smp.h>
 #include <linux/clk/tegra.h>
 
-#include <asm/cacheflush.h>
 #include <asm/smp_plat.h>
 
 #include "sleep.h"
index 2f6af259015d7782d2ebdd8caeade64370e4090f..1c55a55dd89e54d50751bc70e259150e1811856f 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/errno.h>
 #include <linux/smp.h>
 
-#include <asm/cacheflush.h>
 #include <asm/smp_plat.h>
 
 #include <mach/setup.h>
@@ -24,8 +23,6 @@
  */
 void __ref ux500_cpu_die(unsigned int cpu)
 {
-       flush_cache_all();
-
        /* directly enter low power state, skipping secure registers */
        for (;;) {
                __asm__ __volatile__("dsb\n\t" "wfi\n\t"
index a141b98d84fe252d03dafe8ea12e14b517e8430b..f0ce6b8f5e71ba19900dee86e56274a526835bf2 100644 (file)
@@ -12,7 +12,6 @@
 #include <linux/errno.h>
 #include <linux/smp.h>
 
-#include <asm/cacheflush.h>
 #include <asm/smp_plat.h>
 #include <asm/cp15.h>
 
@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void)
 {
        unsigned int v;
 
-       flush_cache_all();
        asm volatile(
                "mcr    p15, 0, %1, c7, c5, 0\n"
        "       mcr     p15, 0, %1, c7, c10, 4\n"