Skip to content

Commit

Permalink
ARM: cpu hotplug: remove majority of cache flushing from platforms
Browse files Browse the repository at this point in the history
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>
  • Loading branch information
Russell King committed Apr 18, 2013
1 parent 51acdfd commit bca7a5a
Show file tree
Hide file tree
Showing 12 changed files with 0 additions and 35 deletions.
1 change: 0 additions & 1 deletion arch/arm/mach-exynos/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
4 changes: 0 additions & 4 deletions arch/arm/mach-highbank/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -15,8 +15,6 @@
*/
#include <linux/kernel.h>

#include <asm/cacheflush.h>

#include "core.h"
#include "sysregs.h"

Expand All @@ -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();

Expand Down
2 changes: 0 additions & 2 deletions arch/arm/mach-imx/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -11,7 +11,6 @@
*/

#include <linux/errno.h>
#include <asm/cacheflush.h>
#include <asm/cp15.h>

#include "common.h"
Expand All @@ -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"
Expand Down
4 changes: 0 additions & 4 deletions arch/arm/mach-msm/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,16 +10,12 @@
#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)
Expand Down
3 changes: 0 additions & 3 deletions arch/arm/mach-omap2/omap-hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -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
*/
Expand Down
3 changes: 0 additions & 3 deletions arch/arm/mach-prima2/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -10,13 +10,10 @@
#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"
Expand Down
2 changes: 0 additions & 2 deletions arch/arm/mach-realview/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,13 @@
#include <linux/errno.h>
#include <linux/smp.h>

#include <asm/cacheflush.h>
#include <asm/cp15.h>
#include <asm/smp_plat.h>

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"
Expand Down
8 changes: 0 additions & 8 deletions arch/arm/mach-shmobile/smp-sh73a0.c
Original file line number Diff line number Diff line change
Expand Up @@ -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);

Expand Down
2 changes: 0 additions & 2 deletions arch/arm/mach-spear13xx/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -13,15 +13,13 @@
#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>

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"
Expand Down
1 change: 0 additions & 1 deletion arch/arm/mach-tegra/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -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"
Expand Down
3 changes: 0 additions & 3 deletions arch/arm/mach-ux500/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -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>
Expand All @@ -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"
Expand Down
2 changes: 0 additions & 2 deletions arch/arm/mach-vexpress/hotplug.c
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,13 @@
#include <linux/errno.h>
#include <linux/smp.h>

#include <asm/cacheflush.h>
#include <asm/smp_plat.h>
#include <asm/cp15.h>

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"
Expand Down

0 comments on commit bca7a5a

Please sign in to comment.