From c4f3b63fe15b4629aa1ec163c95ab30423d0f76a Mon Sep 17 00:00:00 2001 From: Ravikiran G Thirumalai Date: Tue, 16 Oct 2007 23:26:09 -0700 Subject: softlockup: add a /proc tuning parameter Control the trigger limit for softlockup warnings. This is useful for debugging softlockups, by lowering the softlockup_thresh to identify possible softlockups earlier. This patch: 1. Adds a sysctl softlockup_thresh with valid values of 1-60s (Higher value to disable false positives) 2. Changes the softlockup printk to print the cpu softlockup time [akpm@linux-foundation.org: Fix various warnings and add definition of "two"] Signed-off-by: Ravikiran Thirumalai Signed-off-by: Shai Fultheim Acked-by: Ingo Molnar Signed-off-by: Andrew Morton Signed-off-by: Linus Torvalds --- kernel/softlockup.c | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-) (limited to 'kernel/softlockup.c') diff --git a/kernel/softlockup.c b/kernel/softlockup.c index 72c2561ff5f8..edeeef3a6a32 100644 --- a/kernel/softlockup.c +++ b/kernel/softlockup.c @@ -24,6 +24,7 @@ static DEFINE_PER_CPU(unsigned long, print_timestamp); static DEFINE_PER_CPU(struct task_struct *, watchdog_task); static int did_panic; +int softlockup_thresh = 10; static int softlock_panic(struct notifier_block *this, unsigned long event, void *ptr) @@ -104,13 +105,15 @@ void softlockup_tick(void) wake_up_process(per_cpu(watchdog_task, this_cpu)); /* Warn about unreasonable 10+ seconds delays: */ - if (now <= (touch_timestamp + 10)) + if (now <= (touch_timestamp + softlockup_thresh)) return; per_cpu(print_timestamp, this_cpu) = touch_timestamp; spin_lock(&print_lock); - printk(KERN_ERR "BUG: soft lockup detected on CPU#%d!\n", this_cpu); + printk(KERN_ERR "BUG: soft lockup - CPU#%d stuck for %lus! [%s:%d]\n", + this_cpu, now - touch_timestamp, + current->comm, current->pid); if (regs) show_regs(regs); else -- cgit v1.2.3-59-g8ed1b