* [RFC][PATCH] PM: Allow wakeup events to abort freezing of tasks
@ 2010-09-29 22:16 Rafael J. Wysocki
2010-09-30 14:29 ` [linux-pm] " Pavel Machek
0 siblings, 1 reply; 3+ messages in thread
From: Rafael J. Wysocki @ 2010-09-29 22:16 UTC (permalink / raw)
To: Linux-pm mailing list; +Cc: LKML
From: Rafael J. Wysocki <rjw@sisk.pl>
Subject: PM: Allow wakeup events to abort freezing of tasks
If there is a wakeup event during the freezing of tasks, suspend or
hibernation will fail anyway. Since try_to_freeze_tasks() can take
up to 20 seconds to complete or fail, aborting it as soon as a wakeup
event is detected improves the worst case wakeup latency.
Based on a patch from Arve Hjønnevåg.
Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
---
kernel/power/process.c | 11 +++++++++--
1 file changed, 9 insertions(+), 2 deletions(-)
Index: linux-2.6/kernel/power/process.c
===================================================================
--- linux-2.6.orig/kernel/power/process.c
+++ linux-2.6/kernel/power/process.c
@@ -40,6 +40,7 @@ static int try_to_freeze_tasks(bool sig_
struct timeval start, end;
u64 elapsed_csecs64;
unsigned int elapsed_csecs;
+ bool wakeup = false;
do_gettimeofday(&start);
@@ -78,6 +79,11 @@ static int try_to_freeze_tasks(bool sig_
if (!todo || time_after(jiffies, end_time))
break;
+ if (!pm_check_wakeup_events()) {
+ wakeup = true;
+ break;
+ }
+
/*
* We need to retry, but first give the freezing tasks some
* time to enter the regrigerator.
@@ -97,8 +103,9 @@ static int try_to_freeze_tasks(bool sig_
* but it cleans up leftover PF_FREEZE requests.
*/
printk("\n");
- printk(KERN_ERR "Freezing of tasks failed after %d.%02d seconds "
+ printk(KERN_ERR "Freezing of tasks %s after %d.%02d seconds "
"(%d tasks refusing to freeze, wq_busy=%d):\n",
+ wakeup ? "aborted" : "failed",
elapsed_csecs / 100, elapsed_csecs % 100,
todo - wq_busy, wq_busy);
@@ -107,7 +114,7 @@ static int try_to_freeze_tasks(bool sig_
read_lock(&tasklist_lock);
do_each_thread(g, p) {
task_lock(p);
- if (freezing(p) && !freezer_should_skip(p))
+ if (!wakeup && freezing(p) && !freezer_should_skip(p))
sched_show_task(p);
cancel_freezing(p);
task_unlock(p);
^ permalink raw reply [flat|nested] 3+ messages in thread* Re: [linux-pm] [RFC][PATCH] PM: Allow wakeup events to abort freezing of tasks
2010-09-29 22:16 [RFC][PATCH] PM: Allow wakeup events to abort freezing of tasks Rafael J. Wysocki
@ 2010-09-30 14:29 ` Pavel Machek
2010-10-01 21:24 ` Rafael J. Wysocki
0 siblings, 1 reply; 3+ messages in thread
From: Pavel Machek @ 2010-09-30 14:29 UTC (permalink / raw)
To: Rafael J. Wysocki; +Cc: Linux-pm mailing list, LKML
On Thu 2010-09-30 00:16:50, Rafael J. Wysocki wrote:
> From: Rafael J. Wysocki <rjw@sisk.pl>
> Subject: PM: Allow wakeup events to abort freezing of tasks
>
> If there is a wakeup event during the freezing of tasks, suspend or
> hibernation will fail anyway. Since try_to_freeze_tasks() can take
> up to 20 seconds to complete or fail, aborting it as soon as a wakeup
> event is detected improves the worst case wakeup latency.
>
> Based on a patch from Arve Hj??nnev??g.
>
> Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
Ack.
--
(english) http://www.livejournal.com/~pavelmachek
(cesky, pictures) http://atrey.karlin.mff.cuni.cz/~pavel/picture/horses/blog.html
^ permalink raw reply [flat|nested] 3+ messages in thread
* Re: [linux-pm] [RFC][PATCH] PM: Allow wakeup events to abort freezing of tasks
2010-09-30 14:29 ` [linux-pm] " Pavel Machek
@ 2010-10-01 21:24 ` Rafael J. Wysocki
0 siblings, 0 replies; 3+ messages in thread
From: Rafael J. Wysocki @ 2010-10-01 21:24 UTC (permalink / raw)
To: Pavel Machek; +Cc: Linux-pm mailing list, LKML
On Thursday, September 30, 2010, Pavel Machek wrote:
> On Thu 2010-09-30 00:16:50, Rafael J. Wysocki wrote:
> > From: Rafael J. Wysocki <rjw@sisk.pl>
> > Subject: PM: Allow wakeup events to abort freezing of tasks
> >
> > If there is a wakeup event during the freezing of tasks, suspend or
> > hibernation will fail anyway. Since try_to_freeze_tasks() can take
> > up to 20 seconds to complete or fail, aborting it as soon as a wakeup
> > event is detected improves the worst case wakeup latency.
> >
> > Based on a patch from Arve Hj??nnev??g.
> >
> > Signed-off-by: Rafael J. Wysocki <rjw@sisk.pl>
>
> Ack.
Thanks!
^ permalink raw reply [flat|nested] 3+ messages in thread
end of thread, other threads:[~2010-10-01 21:25 UTC | newest]
Thread overview: 3+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2010-09-29 22:16 [RFC][PATCH] PM: Allow wakeup events to abort freezing of tasks Rafael J. Wysocki
2010-09-30 14:29 ` [linux-pm] " Pavel Machek
2010-10-01 21:24 ` Rafael J. Wysocki
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox
all inboxes | Powered by JetHome®