[U-Boot] [PATCH 2/9] ARM: Factor out reusable psci_cpu_entry

Jan Kiszka jan.kiszka at web.de
Sun Feb 15 10:46:52 CET 2015


-----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 at web.de>
>> wrote:
>>> From: Jan Kiszka <jan.kiszka at 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 at 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
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v2

iEYEARECAAYFAlTgawwACgkQitSsb3rl5xQCqgCg1cQM3fGHRbU4VhvHlfvwMkFa
2MwAnRy3lYcAXeCYiCfk8h5WlRLxIxRx
=tcEk
-----END PGP SIGNATURE-----


More information about the U-Boot mailing list