[PATCH] ARM: formalize an IPI for CPU wake-ups

Russell King - ARM Linux linux at arm.linux.org.uk
Tue Aug 7 13:00:26 EDT 2012


On Mon, Aug 06, 2012 at 01:41:06PM -0700, Colin Cross wrote:
> When testing coupled cpuidle on Exynos5, I found that sending an IPI
> does not successfully wake up CPU1.  CPU1 is in a wfe with interrupts
> masked, not a wfi, so an interrupt is not able to wake it up.  It
> tends to wake up anyways because the next time a spin lock is
> unlocked, often during a timer interrupt on CPU0, CPU0 executes an sev
> which wakes up CPU1.  You can see that the IPI is unnecessary by
> removing the gic_raise_softirq and replacing it with dsb_sev().

That's good news; that supports my assertion that the SMP bringup code
we see on various platforms as copies from the Realview code was done
without much thought about what is actually required.

It's good that you're looking into this, and fixing the code on the CPUs
you have access to.  I rather wish we'd made it a requirement for people
to _document_ the actual bringup conditions in the kernel for their
hardware before we accepted their SMP support code.



More information about the linux-arm-kernel mailing list