Commit bca7a5a0 authored by Russell King's avatar Russell King

ARM: cpu hotplug: remove majority of cache flushing from platforms

Remove the majority of cache flushing calls from the individual platform
files.  This is now handled by the core code.
Signed-off-by: default avatarRussell King <rmk+kernel@arm.linux.org.uk>
parent 51acdfd1
...@@ -28,7 +28,6 @@ static inline void cpu_enter_lowpower_a9(void) ...@@ -28,7 +28,6 @@ static inline void cpu_enter_lowpower_a9(void)
{ {
unsigned int v; unsigned int v;
flush_cache_all();
asm volatile( asm volatile(
" mcr p15, 0, %1, c7, c5, 0\n" " mcr p15, 0, %1, c7, c5, 0\n"
" mcr p15, 0, %1, c7, c10, 4\n" " mcr p15, 0, %1, c7, c10, 4\n"
......
...@@ -15,8 +15,6 @@ ...@@ -15,8 +15,6 @@
*/ */
#include <linux/kernel.h> #include <linux/kernel.h>
#include <asm/cacheflush.h>
#include "core.h" #include "core.h"
#include "sysregs.h" #include "sysregs.h"
...@@ -28,8 +26,6 @@ extern void secondary_startup(void); ...@@ -28,8 +26,6 @@ extern void secondary_startup(void);
*/ */
void __ref highbank_cpu_die(unsigned int cpu) void __ref highbank_cpu_die(unsigned int cpu)
{ {
flush_cache_all();
highbank_set_cpu_jump(cpu, phys_to_virt(0)); highbank_set_cpu_jump(cpu, phys_to_virt(0));
highbank_set_core_pwr(); highbank_set_core_pwr();
......
...@@ -11,7 +11,6 @@ ...@@ -11,7 +11,6 @@
*/ */
#include <linux/errno.h> #include <linux/errno.h>
#include <asm/cacheflush.h>
#include <asm/cp15.h> #include <asm/cp15.h>
#include "common.h" #include "common.h"
...@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void) ...@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void)
{ {
unsigned int v; unsigned int v;
flush_cache_all();
asm volatile( asm volatile(
"mcr p15, 0, %1, c7, c5, 0\n" "mcr p15, 0, %1, c7, c5, 0\n"
" mcr p15, 0, %1, c7, c10, 4\n" " mcr p15, 0, %1, c7, c10, 4\n"
......
...@@ -10,16 +10,12 @@ ...@@ -10,16 +10,12 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/cacheflush.h>
#include <asm/smp_plat.h> #include <asm/smp_plat.h>
#include "common.h" #include "common.h"
static inline void cpu_enter_lowpower(void) 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) static inline void cpu_leave_lowpower(void)
......
...@@ -35,9 +35,6 @@ void __ref omap4_cpu_die(unsigned int cpu) ...@@ -35,9 +35,6 @@ void __ref omap4_cpu_die(unsigned int cpu)
unsigned int boot_cpu = 0; unsigned int boot_cpu = 0;
void __iomem *base = omap_get_wakeupgen_base(); void __iomem *base = omap_get_wakeupgen_base();
flush_cache_all();
dsb();
/* /*
* we're ready for shutdown now, so do it * we're ready for shutdown now, so do it
*/ */
......
...@@ -10,13 +10,10 @@ ...@@ -10,13 +10,10 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/cacheflush.h>
#include <asm/smp_plat.h> #include <asm/smp_plat.h>
static inline void platform_do_lowpower(unsigned int cpu) static inline void platform_do_lowpower(unsigned int cpu)
{ {
flush_cache_all();
/* we put the platform to just WFI */ /* we put the platform to just WFI */
for (;;) { for (;;) {
__asm__ __volatile__("dsb\n\t" "wfi\n\t" __asm__ __volatile__("dsb\n\t" "wfi\n\t"
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/cacheflush.h>
#include <asm/cp15.h> #include <asm/cp15.h>
#include <asm/smp_plat.h> #include <asm/smp_plat.h>
...@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void) ...@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void)
{ {
unsigned int v; unsigned int v;
flush_cache_all();
asm volatile( asm volatile(
" mcr p15, 0, %1, c7, c5, 0\n" " mcr p15, 0, %1, c7, c5, 0\n"
" mcr p15, 0, %1, c7, c10, 4\n" " mcr p15, 0, %1, c7, c10, 4\n"
......
...@@ -119,14 +119,6 @@ static int sh73a0_cpu_kill(unsigned int cpu) ...@@ -119,14 +119,6 @@ static int sh73a0_cpu_kill(unsigned int cpu)
static void sh73a0_cpu_die(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 */ /* Set power off mode. This takes the CPU out of the MP cluster */
scu_power_mode(scu_base_addr(), SCU_PM_POWEROFF); scu_power_mode(scu_base_addr(), SCU_PM_POWEROFF);
......
...@@ -13,7 +13,6 @@ ...@@ -13,7 +13,6 @@
#include <linux/kernel.h> #include <linux/kernel.h>
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/cacheflush.h>
#include <asm/cp15.h> #include <asm/cp15.h>
#include <asm/smp_plat.h> #include <asm/smp_plat.h>
...@@ -21,7 +20,6 @@ static inline void cpu_enter_lowpower(void) ...@@ -21,7 +20,6 @@ static inline void cpu_enter_lowpower(void)
{ {
unsigned int v; unsigned int v;
flush_cache_all();
asm volatile( asm volatile(
" mcr p15, 0, %1, c7, c5, 0\n" " mcr p15, 0, %1, c7, c5, 0\n"
" dsb\n" " dsb\n"
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/smp.h> #include <linux/smp.h>
#include <linux/clk/tegra.h> #include <linux/clk/tegra.h>
#include <asm/cacheflush.h>
#include <asm/smp_plat.h> #include <asm/smp_plat.h>
#include "sleep.h" #include "sleep.h"
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/cacheflush.h>
#include <asm/smp_plat.h> #include <asm/smp_plat.h>
#include <mach/setup.h> #include <mach/setup.h>
...@@ -24,8 +23,6 @@ ...@@ -24,8 +23,6 @@
*/ */
void __ref ux500_cpu_die(unsigned int cpu) void __ref ux500_cpu_die(unsigned int cpu)
{ {
flush_cache_all();
/* directly enter low power state, skipping secure registers */ /* directly enter low power state, skipping secure registers */
for (;;) { for (;;) {
__asm__ __volatile__("dsb\n\t" "wfi\n\t" __asm__ __volatile__("dsb\n\t" "wfi\n\t"
......
...@@ -12,7 +12,6 @@ ...@@ -12,7 +12,6 @@
#include <linux/errno.h> #include <linux/errno.h>
#include <linux/smp.h> #include <linux/smp.h>
#include <asm/cacheflush.h>
#include <asm/smp_plat.h> #include <asm/smp_plat.h>
#include <asm/cp15.h> #include <asm/cp15.h>
...@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void) ...@@ -20,7 +19,6 @@ static inline void cpu_enter_lowpower(void)
{ {
unsigned int v; unsigned int v;
flush_cache_all();
asm volatile( asm volatile(
"mcr p15, 0, %1, c7, c5, 0\n" "mcr p15, 0, %1, c7, c5, 0\n"
" mcr p15, 0, %1, c7, c10, 4\n" " mcr p15, 0, %1, c7, c10, 4\n"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment