summaryrefslogtreecommitdiffstats
path: root/arch/arm/mach-sti/smp.h
diff options
context:
space:
mode:
authorPeter Griffin <peter.griffin@linaro.org>2015-06-09 15:33:00 +0200
committerMaxime Coquelin <maxime.coquelin@st.com>2015-07-22 11:14:18 +0200
commit94a8cfceaa7ee7e7187c5de074eb5138a6b77dcf (patch)
tree2c6127ed6971955b775d8e5dc32ae8ba48aa2ecc /arch/arm/mach-sti/smp.h
parentLinux 4.2-rc1 (diff)
downloadlinux-94a8cfceaa7ee7e7187c5de074eb5138a6b77dcf.tar.xz
linux-94a8cfceaa7ee7e7187c5de074eb5138a6b77dcf.zip
ARM: STi: Add code to release secondary cores from holding pen.
Most upstream devs boot STi platform via JTAG which abuses the boot process by setting the PC of secondary cores directly. As a consquence, booting STi platforms via u-boot results in only the primary core being brought up as the code to manage the holding pen is not upstream. This patch adds the necessary code to bring the secondary cores out of the holding pen. It uses the cpu-release-addr DT property to get the address of the holding pen from the bootloader. With this patch booting upstream kernels via u-boot works correctly: [ 0.045456] CPU: Testing write buffer coherency: ok [ 0.045597] CPU0: thread -1, cpu 0, socket 0, mpidr 80000000 [ 0.045734] Setting up static identity map for 0x40209000 - 0x40209098 [ 0.065047] CPU1: thread -1, cpu 1, socket 0, mpidr 80000001 [ 0.065081] Brought up 2 CPUs [ 0.065089] SMP: Total of 2 processors activated (5983.43 BogoMIPS). [ 0.065092] CPU: All CPU(s) started in SVC mode. Signed-off-by: Peter Griffin <peter.griffin@linaro.org> Acked-by: Maxime Coquelin <maxime.coquelin@st.com> Signed-off-by: Maxime Coquelin <maxime.coquelin@st.com>
Diffstat (limited to 'arch/arm/mach-sti/smp.h')
-rw-r--r--arch/arm/mach-sti/smp.h2
1 files changed, 2 insertions, 0 deletions
diff --git a/arch/arm/mach-sti/smp.h b/arch/arm/mach-sti/smp.h
index 1871b72b1a7e..ae22707d301f 100644
--- a/arch/arm/mach-sti/smp.h
+++ b/arch/arm/mach-sti/smp.h
@@ -14,4 +14,6 @@
extern struct smp_operations sti_smp_ops;
+void sti_secondary_startup(void);
+
#endif