[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