[PATCH] detect soft lockups
This patch adds a new kernel debug feature: CONFIG_DETECT_SOFTLOCKUP. When enabled then per-CPU watchdog threads are started, which try to run once per second. If they get delayed for more than 10 seconds then a callback from the timer interrupt detects this condition and prints out a warning message and a stack dump (once per lockup incident). The feature is otherwise non-intrusive, it doesnt try to unlock the box in any way, it only gets the debug info out, automatically, and on all CPUs affected by the lockup. Signed-off-by: Ingo Molnar <mingo@elte.hu> Signed-off-by: Nishanth Aravamudan <nacc@us.ibm.com> Signed-Off-By: Matthias Urlichs <smurf@smurf.noris.de> Signed-off-by: Richard Purdie <rpurdie@rpsys.net> Signed-off-by: Andrew Morton <akpm@osdl.org> Signed-off-by: Linus Torvalds <torvalds@osdl.org>
This commit is contained in:
committed by
Linus Torvalds
parent
4732efbeb9
commit
8446f1d391
@@ -478,6 +478,11 @@ void touch_nmi_watchdog (void)
|
||||
*/
|
||||
for (i = 0; i < NR_CPUS; i++)
|
||||
alert_counter[i] = 0;
|
||||
|
||||
/*
|
||||
* Tickle the softlockup detector too:
|
||||
*/
|
||||
touch_softlockup_watchdog();
|
||||
}
|
||||
|
||||
extern void die_nmi(struct pt_regs *, const char *msg);
|
||||
|
@@ -422,6 +422,7 @@ static int timer_resume(struct sys_device *dev)
|
||||
last_timer->resume();
|
||||
cur_timer = last_timer;
|
||||
last_timer = NULL;
|
||||
touch_softlockup_watchdog();
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
Reference in New Issue
Block a user