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

Marc Zyngier marc.zyngier at arm.com
Fri May 30 10:56:58 CEST 2014


Hi Liu,

On 30/05/14 03:25, TigerLiu at via-alliance.com wrote:
> Hi, Marc:
> I am studying ARMv8's u-boot code with FVP model.
> In do_nonsec_virt_switch() function in bootm.c :
> It will call smp_kick_all_cpus() function :
> It seems it would set GICD_SGIR[24] = 1, forward the interrupt to all
> CPU interfaces except tha tof the processor that requested the
> interrupt.
> 
> So, who generated the interrupt(which would be forwarded to other
> cores)?

I suggest you have a look at the GICv2 architecture document, section
4.3.15, which describes the GICD_SGIR register. Writing to this register
generates the interrupt (SGI number in GICD_SGIR[3:0}), and
GICD_SGIR[25:24] determines who gets it.

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?

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


More information about the U-Boot mailing list