diff --git a/arch/arm/mach-rk2928/include/mach/io.h b/arch/arm/mach-rk2928/include/mach/io.h index c11a87920da9..b2adbf18ee0e 100755 --- a/arch/arm/mach-rk2928/include/mach/io.h +++ b/arch/arm/mach-rk2928/include/mach/io.h @@ -189,6 +189,7 @@ #define RK30_CRU_BASE RK2928_CRU_BASE #define RK30_GRF_BASE RK2928_GRF_BASE #define RK30_IMEM_BASE RK2928_IMEM_BASE +#define RK30_IMEM_NONCACHED RK2928_IMEM_NONCACHED #define RK30_PTIMER_BASE RK2928_PTIMER_BASE #define RK30_ROM_BASE RK2928_ROM_BASE #define RK30_SCU_BASE RK2928_SCU_BASE diff --git a/arch/arm/mach-rk30/platsmp.c b/arch/arm/mach-rk30/platsmp.c index f1edf874eace..488cc95550eb 100755 --- a/arch/arm/mach-rk30/platsmp.c +++ b/arch/arm/mach-rk30/platsmp.c @@ -82,14 +82,13 @@ int __cpuinit boot_secondary(unsigned int cpu, struct task_struct *idle) for (i = 1; i < ncores; i++) pmu_set_power_domain(PD_A9_0 + i, false); - memcpy(RK30_IMEM_BASE, rk30_sram_secondary_startup, sz); - flush_icache_range((unsigned long)RK30_IMEM_BASE, (unsigned long)RK30_IMEM_BASE + sz); - outer_clean_range(0, sz); + memcpy(RK30_IMEM_NONCACHED, rk30_sram_secondary_startup, sz); + isb(); + dsb(); first = false; } - dsb_sev(); pmu_set_power_domain(PD_A9_0 + cpu, true); return 0;