2001-12-17 17:49:26

by Castor Fu

[permalink] [raw]
Subject: i386 machine_restart unsafe in interrupt context

I have a problem where systems fail to reboot on panic(). I've resolved
it by changing smp_send_stop() to use an NMI (like the KDB patch does to
manage communication).

The source of the problem is that the panic path has the following:

panic()
machine_restart()
machine_real_restart()
smp_send_stop()
smp_call_function()

and smp_call_function() is not safe in an interrupt context.

I imagine people might want to handle this differently, but I'd be
happy to diffs if there's interest. It may be that there are enough
cases like this that smp_call_function might want a version that
uses an NMI. . .

-Castor Fu
[email protected]