[U-Boot] smp_kick_all_cpus() function's role

Marc Zyngier marc.zyngier at arm.com
Tue Jun 3 11:19:25 CEST 2014


On Tue, Jun 03 2014 at  3:16:19 am BST, "TigerLiu at via-alliance.com" <TigerLiu at via-alliance.com> wrote:
> Hi, Marc:
>>In short, if you're setting GICD_SGIR[24] to 1, you're sending SGI0 to
>>all CPUs but yourself. This seems to match the name of the function,
>>doesn't it?
> I described my understanding based on 2014.07-RC2 u-boot source code:
> (For ARMv8 cores)
> 1. smp_kick_all_cpus() will send SGI0 to all other cores except BSP.
>    These non-BSP cores handled this SGI0 in gic_wait_for_interrupt(), and then switched to EL2/EL1 .
>    These code is implemented in lowlevel_init in arch/arm/cpu/armv8/start.S.
>   Is my understanding right?

I can't tell, I haven't read that bit of code. But that seems similar to
what ARMv7 used to do.

> 2. if runing with ATF(Arm Trusted Firmware) + Uboot.bin
>    ATF has put non-BSP cores to WFI state.
>    So, before jumping to u-boot's entrypoint, there is only a BSP .
>    So, smp_kick_all_cpus() could wake up these non-BSP cores?

My understanding is that if you're using the Trusted Firmware, then you
have an implementation of PSCI, and that's what you must use to bring
the CPUs into u-boot. U-Boot will be running non-secure anyway, so it
requires the firmware to perform S to NS transition on its behalf.

	M.
-- 
Jazz is not dead. It just smells funny.


More information about the U-Boot mailing list