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: Russell King <rmk+kernel@arm.linux.org.uk>
This commit is contained in:
parent
51acdfd1fa
commit
bca7a5a049
@ -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 @@
|
|||||||
*/
|
*/
|
||||||
#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);
|
|||||||
*/
|
*/
|
||||||
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 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
#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)
|
|||||||
{
|
{
|
||||||
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 @@
|
|||||||
#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)
|
|||||||
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 @@
|
|||||||
#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 @@
|
|||||||
#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)
|
|||||||
{
|
{
|
||||||
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)
|
|||||||
|
|
||||||
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 @@
|
|||||||
#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)
|
|||||||
{
|
{
|
||||||
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 @@
|
|||||||
#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 @@
|
|||||||
#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 @@
|
|||||||
*/
|
*/
|
||||||
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 @@
|
|||||||
#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)
|
|||||||
{
|
{
|
||||||
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"
|
||||||
|
Loading…
x
Reference in New Issue
Block a user