Re: [RFC][PATCH 1/3] PM: Introduce new top level suspend and hibernation callbacks

Rafael J. Wysocki
2008-03-19T01:04:06Z

On Wednesday, 19 of March 2008, Pavel Machek wrote:
> Hi!

Hi,

> > > So... we do prepare() but it detects new child, so it returns -EAGAIN.
> > > so we call complete() based on description above
> > > ...and then we call prepare() to suspend again?
> >
> > You misunderstood (maybe the comment needs to be clarified as above).
>
> Yes, please :-).
>
> > If prepare() returns any error (including -EAGAIN) then complete() does
> > not get called. If prepare() returns successfully but the PM core
> > detects that a new child was added while prepare() was running, then we
> > call complete(), suspend the child, and call prepare() again.
>
> Ok.
>
> > > > + * @suspend: Executed before putting the system into a sleep state in which the
> > > > + * contents of main memory are preserved. Quiesce the device, put it into
> > >
> > > content....is?
> >
> > It's okay to use "contents" -- analogous to the table of contents in a
> > book. It's one of those weird corner cases where either alternative is
> > acceptable.
>
> Ok -- I guess I should get that english course ;-).

Thanks for the comments.

In the meantime I had an IRC chat with Ben, who wanted a couple of quite
substantial changes to be made to this patch.

First, Ben thinks that ->prepare() should be called in a separate loop for
all devices, before any of them is suspended, so that drivers can assume the
availability of the other devices during ->prepare() (for example, so that they
can use GFP_KERNEL memory allocations). Accordingly, ->complete() would
be called in a separate loop after calling ->resume() for all devices.

Next, he wants the number of noirq callbacks to be reduced.

Both of the above things make sense, so I'll rework the patch (or maybe even
all three patches) to implement them and we'll see how they will look like.

Thanks,
Rafael