
-----BEGIN PGP SIGNED MESSAGE----- Hash: SHA1
On 2015-02-15 07:29, Jan Kiszka wrote:
On 2015-02-15 03:01, Chen-Yu Tsai wrote:
Hi,
On Sun, Feb 15, 2015 at 5:28 AM, Jan Kiszka jan.kiszka@web.de wrote:
From: Jan Kiszka jan.kiszka@siemens.com
_sunxi_cpu_entry can be converted completely into a reusable psci_cpu_entry. Tegra124 will use it as well.
Signed-off-by: Jan Kiszka jan.kiszka@siemens.com --- arch/arm/cpu/armv7/psci.S | 19 +++++++++++++++++++ arch/arm/cpu/armv7/sunxi/psci.S | 21 ++------------------- 2 files changed, 21 insertions(+), 19 deletions(-)
diff --git a/arch/arm/cpu/armv7/psci.S b/arch/arm/cpu/armv7/psci.S index d688607..e916d71 100644 --- a/arch/arm/cpu/armv7/psci.S +++ b/arch/arm/cpu/armv7/psci.S @@ -170,4 +170,23 @@ ENTRY(psci_cpu_off_common) bx lr ENDPROC(psci_cpu_off_common)
+ENTRY(psci_cpu_entry) + @ Set SMP bit + mrc p15, 0, r0, c1, c0, 1 @ ACTLR + orr r0, r0, #(1 << 6) @ Set SMP bit + mcr p15, 0, r0, c1, c0, 1 @ ACTLR + isb + + bl _nonsec_init + bl psci_arch_init + + adr r0, _psci_target_pc + ldr r0, [r0] + b _do_nonsec_entry +ENDPROC(psci_cpu_entry) + +.globl _psci_target_pc +_psci_target_pc: + .word 0
The sunxi version didn't have a per-core target_pc variable. It is still the case here. Is this the correct way to implement it? I see per-core storage of this in some of the kernel's smp ops.
On sunxi it works because the only platform using it only has one secondary core.
With homogeneous SMP, it probably works as well because reset vectors may not differ across the cores. But this remains a valid point.
I'm considering to push this variable to the top of the per-CPU stack. Calculating the stack position is actually another function to factor out.
https://github.com/siemens/u-boot/commits/jetson-tk1-v2
works fine on the TK1, but I'd like to give it a try on a Banana Pi as well (currently out of reach) before reposting.
Jan