From: Peter Osterlund <petero2@telia.com>
To: Pavel Machek <pavel@ucw.cz>
Cc: Kernel Mailing List <linux-kernel@vger.kernel.org>
Subject: Re: Software suspend testing in 2.6.0-test1
Date: 21 Jul 2003 16:36:31 +0200 [thread overview]
Message-ID: <m21xwkvte8.fsf@telia.com> (raw)
In-Reply-To: <20030721125813.GA4775@zaurus.ucw.cz>
Pavel Machek <pavel@ucw.cz> writes:
> > @@ -214,9 +218,12 @@
> > read_lock(&tasklist_lock);
> > do_each_thread(g, p) {
> > unsigned long flags;
> > - INTERESTING(p);
> > + if (!interesting_process(p))
> > + continue;
> > if (p->flags & PF_FROZEN)
> > continue;
> > + if (p->state == TASK_STOPPED)
> > + continue;
> >
> > /* FIXME: smp problem here: we may not access other process' flags
> > without locking */
>
> No need to handle TASK_STOPPED tasks, as they are "frozen" already. Ok.
If the process was stopped before swsusp was invoked, the process will
never reach refrigerator() and therefore never set the PF_FROZEN
flag. Without the test for TASK_STOPPED, swsusp gives up and claims
that it can't stop all processes.
> > read_lock(&tasklist_lock);
> > do_each_thread(g, p) {
> > - INTERESTING(p);
> > -
> > - if (p->flags & PF_FROZEN) p->flags &= ~PF_FROZEN;
> > - else
> > - printk(KERN_INFO " Strange, %s not stopped\n", p->comm );
> > - wake_up_process(p);
> > + if (!interesting_process(p))
> > + continue;
> > +
> > + p->flags &= ~PF_FREEZE;
> > + if (p->flags & PF_FROZEN) {
> > + p->flags &= ~PF_FROZEN;
> > + wake_up_process(p);
> > + } else
> > +
> But why do you touch PF_FROZEN here? Refrigerator should do that.
> And wake_up_process should not be needed...
> If it is in refrigerator, it polls PF_FREEZE...
Note that the old code always called wake_up_process(), which is
necessary to make the process run one more iteration in refrigerator()
and relize that it is time to unfreeze.
The patch changes things so that wake_up_process() is NOT called if
the process is stopped at some other place than in refrigerator().
This ensures that processes that were stopped before we invoked swsusp
are still stopped after resume.
I manually clear PF_FREEZE here in an attempt to handle a race
condition, but I realize I need to understand more of the scheduler
and signal code before I know for sure if this is necessary and/or
sufficient.
--
Peter Osterlund - petero2@telia.com
http://w1.894.telia.com/~u89404340
next prev parent reply other threads:[~2003-07-21 14:23 UTC|newest]
Thread overview: 26+ messages / expand[flat|nested] mbox.gz Atom feed top
2003-07-17 19:46 Software suspend testing in 2.6.0-test1 Peter Osterlund
2003-07-17 20:00 ` Pavel Machek
2003-07-17 20:09 ` Andrew Morton
2003-07-18 9:59 ` Peter Osterlund
2003-07-18 10:24 ` Andrew Morton
2003-07-18 15:22 ` Pavel Machek
2003-07-18 15:55 ` Peter Osterlund
2003-07-18 16:45 ` Andrew Morton
2003-07-18 17:50 ` Pavel Machek
2003-07-18 18:02 ` Patrick Mochel
2003-07-18 18:04 ` Pavel Machek
2003-07-18 21:05 ` Nigel Cunningham
2003-07-18 19:37 ` Andrew Morton
2003-07-18 19:58 ` Peter Osterlund
2003-07-18 20:15 ` Andrew Morton
2003-07-18 22:13 ` Pavel Machek
2003-07-20 0:22 ` Peter Osterlund
2003-07-20 1:01 ` Andrew Morton
2003-07-20 7:45 ` Peter Osterlund
2003-07-18 21:05 ` Nigel Cunningham
2003-07-21 10:00 ` Peter Osterlund
2003-07-21 12:58 ` Pavel Machek
2003-07-21 14:36 ` Peter Osterlund [this message]
2003-07-21 21:28 ` Pavel Machek
2003-07-21 23:46 ` Peter Osterlund
2003-07-22 11:04 ` Pavel Machek
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=m21xwkvte8.fsf@telia.com \
--to=petero2@telia.com \
--cc=linux-kernel@vger.kernel.org \
--cc=pavel@ucw.cz \
/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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).