On Fri, 2011-01-07 at 13:05 +0530, Rajat Sharma wrote:
As I remember timer interrupt as well is an NMI so, it is possible (although not advised) to call schedule function while holding spinlock on same core.
spin_lock_irqsave(); schedule(); spin_lock_irqrestore();
however if you have debugging options turned on like CONFIG_DEBUG_SPINLOCK, you may likely get kernel warning for 'scheduling in atomic context'.
Then what can happen if this core is allowed to switched to new process? Consider the case where new process as well tries to aquire same spin_lock() which new process can not aquire and start spinning for the lock for ever :). Likewise, other cores will also get locked down.
However stil you can detect softlockup through NMI watchdog.
Sorry if I am building up the confusion here. But as Dave Hylands initially mentioned, there will be no timer interrupt. So shouldn't the NMI watchdog get triggered then? No interrupts -> system freeze -> NMI Wdt reboot. http://slacksite.com/slackware/nmi.html
Rajat
-- Thanks, Nilesh