Subject: [PATCH v2] Add call to non-crashing cores through IPI

From: [email-masked] (Olof Johansson)
Date: Mon, 29 Nov 2010 11:47:05 -0600

On Mon, Nov 29, 2010 at 01:46:26PM +0100, Per Fransson wrote:
> >> ?void machine_crash_shutdown(struct pt_regs *regs)
> >> ?{
> >> + ? ? unsigned long msecs;
> >
> > Int should be enough here? Not that it makes a difference on ARM, but
> > anyway. :)
> >
> >> +
> >> ? ? ? local_irq_disable();
> >> +
> >> + ? ? atomic_set(&waiting_for_crash_ipi, num_online_cpus() - 1);
> >> + ? ? smp_call_function(machine_crash_nonpanic_core, NULL, false);
> >> + ? ? msecs = 1000; /* Wait at most a second for the other cpus to stop */
> >> + ? ? while ((atomic_read(&waiting_for_crash_ipi) > 0) && msecs) {
> >> + ? ? ? ? ? ? mdelay(1);
> >> + ? ? ? ? ? ? msecs--;
> >> + ? ? }
> 
> The choice of type comes from the corresponding x86 code in
> 
>     arch/x86/kernel/reboot.c:nmi_shootdown_cpus()
> 
> Should we deviate?

We've already spent more time discussing this than it's worth. :-)
Leave it if you prefer.

-Olof