aboutsummaryrefslogtreecommitdiff
path: root/kernel/softlockup.c
diff options
context:
space:
mode:
authorPaul Mackerras <paulus@samba.org>2008-03-03 21:31:09 +1100
committerPaul Mackerras <paulus@samba.org>2008-03-03 21:31:09 +1100
commit3cecdda3f169f22f324f78fd544beee68e3cc6a4 (patch)
treee7c2995ddc2690d1be695a1525bcd16d3965548d /kernel/softlockup.c
parentb9c64498f53e0f4d90eec03048f73ac215bb6f79 (diff)
parentda40451bba23b51eaca4170a095891646ce72104 (diff)
Merge branch 'for-2.6.25' of master.kernel.org:/pub/scm/linux/kernel/git/arnd/cell-2.6 into merge
Diffstat (limited to 'kernel/softlockup.c')
-rw-r--r--kernel/softlockup.c13
1 files changed, 7 insertions, 6 deletions
diff --git a/kernel/softlockup.c b/kernel/softlockup.c
index 7c2da88db4e..01b6522fd92 100644
--- a/kernel/softlockup.c
+++ b/kernel/softlockup.c
@@ -216,26 +216,27 @@ static int watchdog(void *__bind_cpu)
/* initialize timestamp */
touch_softlockup_watchdog();
+ 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 softlockup_tick().
*/
while (!kthread_should_stop()) {
- set_current_state(TASK_INTERRUPTIBLE);
touch_softlockup_watchdog();
schedule();
if (kthread_should_stop())
break;
- if (this_cpu != check_cpu)
- continue;
-
- if (sysctl_hung_task_timeout_secs)
- check_hung_uninterruptible_tasks(this_cpu);
+ if (this_cpu == check_cpu) {
+ if (sysctl_hung_task_timeout_secs)
+ check_hung_uninterruptible_tasks(this_cpu);
+ }
+ set_current_state(TASK_INTERRUPTIBLE);
}
+ __set_current_state(TASK_RUNNING);
return 0;
}