From: 黄涛 Date: Sat, 3 Aug 2013 06:27:51 +0000 (+0800) Subject: rk3026: fix boot secondary cpu fail X-Git-Tag: firefly_0821_release~6762 X-Git-Url: http://demsky.eecs.uci.edu/git/?a=commitdiff_plain;h=52827dabaca4e1a0689ca0b110b242a6a053f3e2;p=firefly-linux-kernel-4.4.55.git rk3026: fix boot secondary cpu fail --- 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;