From: "Rafael J. Wysocki" <rjw@sisk.pl>
To: Pavel Machek <pavel@ucw.cz>
Cc: suspend-devel List <suspend-devel@lists.sourceforge.net>,
pm list <linux-pm@lists.osdl.org>,
Stephen Hemminger <shemminger@osdl.org>
Subject: Re: [PATCH -mm 1/2]: PM: Fix handling of stopped tasks
Date: Tue, 5 Dec 2006 23:45:28 +0100 [thread overview]
Message-ID: <200612052345.28882.rjw@sisk.pl> (raw)
In-Reply-To: <20061205223634.GA2642@elf.ucw.cz>
Hi,
On Tuesday, 5 December 2006 23:36, Pavel Machek wrote:
> Hi!
>
> > ... and it fails to freeze processes if there's a stopped task (to verify,
> > run vi, press ^Z, and try to suspend).
>
> Ok, here's better version. (Notice it only differs by one bit ;-).
>
> Ok, something is still weird. Bash reports spurious...
>
> [2]+ Stopped vi
>
> ...after resume.
This is because of how signal_wake_up() works, I think..
> But I think it is right approach.
Fine by me with a couple of remarks below.
> We want to store all the tasks in refrigerator.
> Pavel
>
>
> diff --git a/kernel/power/process.c b/kernel/power/process.c
> index 7bcc976..9849d88 100644
> --- a/kernel/power/process.c
> +++ b/kernel/power/process.c
> @@ -26,8 +26,7 @@ static inline int freezeable(struct task
> (p->flags & PF_NOFREEZE) ||
> (p->exit_state == EXIT_ZOMBIE) ||
> (p->exit_state == EXIT_DEAD) ||
> - ((p->exit_state == TASK_TRACED) && frozen(p->parent)) ||
> - (p->state == TASK_STOPPED))
> + ((p->exit_state == TASK_TRACED) && frozen(p->parent)))
This doesn't apply to -mm as well as to -stable, -git, whatever. There's no
((p->exit_state == TASK_TRACED) && frozen(p->parent)) ||
line here in any of these kernels. Instead, there is a check in
try_to_freeze_tasks() that does this.
> return 0;
> return 1;
> }
> @@ -62,7 +61,7 @@ static inline void freeze_process(struct
> if (!freezing(p)) {
> freeze(p);
> spin_lock_irqsave(&p->sighand->siglock, flags);
> - signal_wake_up(p, 0);
> + signal_wake_up(p, 1);
Do we want traced tasks to get kicked here? If not, we'd have to write our
own signal_wake_up() (no big deal, I think) or modify the existing one to be
able to kick TASK_STOPPED without kicking TASK_TRACED.
> spin_unlock_irqrestore(&p->sighand->siglock, flags);
> }
> }
> diff --git a/kernel/signal.c b/kernel/signal.c
> index 9a61944..e305ad1 100644
> --- a/kernel/signal.c
> +++ b/kernel/signal.c
> @@ -1702,7 +1702,9 @@ finish_stop(int stop_count)
> read_unlock(&tasklist_lock);
> }
>
> - schedule();
> + do {
> + schedule();
> + } while (try_to_freeze());
> /*
> * Now we don't run again until continued.
> */
Greetings,
Rafael
--
If you don't have the time to read,
you don't have the time or the tools to write.
- Stephen King
-------------------------------------------------------------------------
Take Surveys. Earn Cash. Influence the Future of IT
Join SourceForge.net's Techsay panel and you'll get the chance to share your
opinions on IT & business topics through brief surveys - and earn cash
http://www.techsay.com/default.php?page=join.php&p=sourceforge&CID=DEVDEV
next prev parent reply other threads:[~2006-12-05 22:45 UTC|newest]
Thread overview: 43+ messages / expand[flat|nested] mbox.gz Atom feed top
2006-12-03 22:18 [PATCH -mm 0/2]: SMP-safe freezer Rafael J. Wysocki
2006-12-03 22:50 ` [PATCH -mm 1/2]: PM: Fix handling of stopped tasks Rafael J. Wysocki
2006-12-05 10:25 ` Pavel Machek
2006-12-05 10:34 ` Pavel Machek
2006-12-05 11:06 ` Rafael J. Wysocki
2006-12-05 14:13 ` Pavel Machek
2006-12-05 14:22 ` Rafael J. Wysocki
2006-12-05 11:24 ` Pavel Machek
2006-12-05 11:38 ` Rafael J. Wysocki
2006-12-05 14:12 ` Pavel Machek
2006-12-05 14:26 ` Rafael J. Wysocki
2006-12-05 14:33 ` Rafael J. Wysocki
2006-12-05 15:27 ` Pavel Machek
2006-12-05 17:22 ` Rafael J. Wysocki
2006-12-05 21:03 ` Rafael J. Wysocki
2006-12-05 21:26 ` Rafael J. Wysocki
2006-12-05 21:42 ` [Suspend-devel] " Rafael J. Wysocki
2006-12-05 22:19 ` Pavel Machek
2006-12-05 22:18 ` Rafael J. Wysocki
2006-12-06 0:07 ` [linux-pm] " Nigel Cunningham
2006-12-05 22:36 ` Pavel Machek
2006-12-05 22:45 ` Rafael J. Wysocki [this message]
2006-12-05 23:08 ` Rafael J. Wysocki
2006-12-05 23:45 ` Pavel Machek
2006-12-06 0:02 ` [Suspend-devel] " Nigel Cunningham
2006-12-06 23:13 ` Rafael J. Wysocki
2006-12-08 11:21 ` Pavel Machek
2006-12-08 11:49 ` Rafael J. Wysocki
2006-12-08 13:05 ` Rafael J. Wysocki
2006-12-08 22:07 ` Rafael J. Wysocki
2006-12-08 23:36 ` Pavel Machek
2006-12-09 15:35 ` Rafael J. Wysocki
2006-12-10 0:27 ` Rafael J. Wysocki
2006-12-10 10:45 ` Rafael J. Wysocki
2006-12-10 20:00 ` Pavel Machek
2006-12-10 11:26 ` Rafael J. Wysocki
2006-12-03 23:10 ` [PATCH -mm 2/2]: PM: SMP-safe freezer Rafael J. Wysocki
2006-12-04 10:30 ` Pavel Machek
2006-12-04 14:03 ` Rafael J. Wysocki
2006-12-04 19:44 ` Pavel Machek
2006-12-04 19:56 ` Rafael J. Wysocki
2006-12-05 5:43 ` [linux-pm] " David Brownell
2006-12-05 11:14 ` [Suspend-devel] " Rafael J. Wysocki
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=200612052345.28882.rjw@sisk.pl \
--to=rjw@sisk.pl \
--cc=linux-pm@lists.osdl.org \
--cc=pavel@ucw.cz \
--cc=shemminger@osdl.org \
--cc=suspend-devel@lists.sourceforge.net \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.