summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorStephen Rothwell <sfr@canb.auug.org.au>2009-10-08 15:41:18 +1100
committerStephen Rothwell <sfr@canb.auug.org.au>2009-10-08 15:41:18 +1100
commit2ffb110ad2f0b8c9f2e3624f13ae5242969c7fd0 (patch)
treed078592a43f3031080572a9555c3adb783ee277e
parent13b884540dd940c877df786138bbad0a5ae986fb (diff)
Revert "PM / freezer: Don't get over-anxious while waiting"
This reverts commit a48145a7cbf3b0555ba3ad61aaf2c38719bab95d.
-rw-r--r--kernel/power/process.c13
1 files changed, 4 insertions, 9 deletions
diff --git a/kernel/power/process.c b/kernel/power/process.c
index 66161f0d81a9..cc2e55373b68 100644
--- a/kernel/power/process.c
+++ b/kernel/power/process.c
@@ -41,7 +41,7 @@ static int try_to_freeze_tasks(bool sig_only)
do_gettimeofday(&start);
end_time = jiffies + TIMEOUT;
- while (true) {
+ do {
todo = 0;
read_lock(&tasklist_lock);
do_each_thread(g, p) {
@@ -62,15 +62,10 @@ static int try_to_freeze_tasks(bool sig_only)
todo++;
} while_each_thread(g, p);
read_unlock(&tasklist_lock);
- if (!todo || time_after(jiffies, end_time))
+ yield(); /* Yield is okay here */
+ if (time_after(jiffies, end_time))
break;
-
- /*
- * We need to retry, but first give the freezing tasks some
- * time to enter the regrigerator.
- */
- msleep(10);
- }
+ } while (todo);
do_gettimeofday(&end);
elapsed_csecs64 = timeval_to_ns(&end) - timeval_to_ns(&start);