diff options
Diffstat (limited to 'kernel/watchdog.c')
| -rw-r--r-- | kernel/watchdog.c | 26 | 
1 files changed, 13 insertions, 13 deletions
diff --git a/kernel/watchdog.c b/kernel/watchdog.c index 1d7bca7f4f5..14bc092fb12 100644 --- a/kernel/watchdog.c +++ b/kernel/watchdog.c @@ -3,12 +3,9 @@   *   * started by Don Zickus, Copyright (C) 2010 Red Hat, Inc.   * - * this code detects hard lockups: incidents in where on a CPU - * the kernel does not respond to anything except NMI. - * - * Note: Most of this code is borrowed heavily from softlockup.c, - * so thanks to Ingo for the initial implementation. - * Some chunks also taken from arch/x86/kernel/apic/nmi.c, thanks + * Note: Most of this code is borrowed heavily from the original softlockup + * detector, so thanks to Ingo for the initial implementation. + * Some chunks also taken from the old x86-specific nmi watchdog code, thanks   * to those contributors as well.   */ @@ -117,9 +114,10 @@ static unsigned long get_sample_period(void)  {  	/*  	 * convert watchdog_thresh from seconds to ns -	 * the divide by 5 is to give hrtimer 5 chances to -	 * increment before the hardlockup detector generates -	 * a warning +	 * the divide by 5 is to give hrtimer several chances (two +	 * or three with the current relation between the soft +	 * and hard thresholds) to increment before the +	 * hardlockup detector generates a warning  	 */  	return get_softlockup_thresh() * (NSEC_PER_SEC / 5);  } @@ -296,7 +294,7 @@ static enum hrtimer_restart watchdog_timer_fn(struct hrtimer *hrtimer)  		if (__this_cpu_read(soft_watchdog_warn) == true)  			return HRTIMER_RESTART; -		printk(KERN_ERR "BUG: soft lockup - CPU#%d stuck for %us! [%s:%d]\n", +		printk(KERN_EMERG "BUG: soft lockup - CPU#%d stuck for %us! [%s:%d]\n",  			smp_processor_id(), duration,  			current->comm, task_pid_nr(current));  		print_modules(); @@ -336,9 +334,11 @@ static int watchdog(void *unused)  	set_current_state(TASK_INTERRUPTIBLE);  	/* -	 * Run briefly once per second to reset the softlockup timestamp. -	 * If this gets delayed for more than 60 seconds then the -	 * debug-printout triggers in watchdog_timer_fn(). +	 * Run briefly (kicked by the hrtimer callback function) once every +	 * get_sample_period() seconds (4 seconds by default) to reset the +	 * softlockup timestamp. If this gets delayed for more than +	 * 2*watchdog_thresh seconds then the debug-printout triggers in +	 * watchdog_timer_fn().  	 */  	while (!kthread_should_stop()) {  		__touch_watchdog();  |