ARM: cpu hotplug: remove majority of cache flushing from platforms
Russell King [Thu, 18 Apr 2013 17:15:44 +0000 (18:15 +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 c3f825b..af90cfa 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 f30c528..35dd42e 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 361a253..5e91112 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 750446f..326a872 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 e712d17..ceb30a5 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 f4b17cb..0ab2f8b 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 53818e5..ac22dd4 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 acb46a9..2f1ef1b 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 a7d2dd1..d97749c 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 1fb9915..e8323bc 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 2f6af25..1c55a55 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 a141b98..f0ce6b8 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"