Re: Software suspend testing in 2.6.0-test1

Pavel Machek
2003-07-22T10:49:48Z

Hi!

> > > > 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.
> >
> > Yes, but you still print warning for them. I hopefully killed that.
> ...
> > +static inline int interesting_process(struct task_struct *p)
> > +{
> > + if (p->flags & PF_IOTHREAD)
> > + return 0;
> > + if (p == current)
> > + return 0;
> > + if ((p->state == TASK_ZOMBIE) || (p->state == TASK_DEAD))
> > + return 0;
> > + if (p->state == TASK_STOPPED)
> > + return 0;
> > +
> > +
> > + return 1;
> > +}
>
> But this doesn't work. We can't skip stopped tasks in the
> thaw_processes() function, because frozen tasks are also stopped
> tasks. Therefore nothing will be woken up during resume.
>
> It's probably best to just delete the printk("strange,...") line.

Okay, you are right, I'll stick with your solution for now.

I'd prefer to keep that "strange" line, so that we know if they are
some problems.
Pavel
--
When do you have a heart between your knees?
[Johanka's followup: and *two* hearts?]