Re: [PATCH 0/8] Suspend block api (version 8)

mark gross
2010-05-31T23:26:17Z

On Mon, May 31, 2010 at 11:38:55PM +0200, Rafael J. Wysocki wrote:
> On Monday 31 May 2010, Arve Hjønnevåg wrote:
> > 2010/5/29 Alan Stern <stern@rowland.harvard.edu>:
> > > On Sat, 29 May 2010, Arve Hjønnevåg wrote:
> > >
> > >> > In place of in-kernel suspend blockers, there will be a new type of QoS
> > >> > constraint -- call it QOS_EVENTUALLY. It's a very weak constraint,
> > >> > compatible with all cpuidle modes in which runnable threads are allowed
> > >> > to run (which is all of them), but not compatible with suspend.
> > >> >
> > >> This sound just like another API rename. It will work, but given that
> > >> suspend blockers was the name least objectionable last time around,
> > >> I'm not sure what this would solve.
> > >
> > > It's not just a rename. By changing this into a QoS constraint, we
> > > make it more generally useful. Instead of standing on its own, it
> > > becomes part of the PM-QOS framework.
> > >
> >
> > We cannot use the existing pm-qos framework. It is not safe to call
> > from atomic context.
>
> We've just merged a patch that fixed that if I'm not mistaken. Mark, did your
> PM QoS update fix that?
>

I'm pretty sure it can be called in atomic context, and if its not I'm
sure we can fix that. It can be called in atomic context. I don't
think it was ever a problem to call it in atomic context. The problem it
had was that crappy list of string compares. Thats been fixed.

--mgross

> > Also, it does not have any state constraints, so it iterates over every
> > registered constraint each time one of them changes.
>
> That's fixable IMO.
>
> > Nor does is currently provide any stats for debugging.
>
> That's why Alan is proposing to add that.
>
> > The original wakelock patchset supported a wakelock type so it could
> > be used to block more then suspend, but I had to remove this because
> > it "overlapped" with pm-qos. So, yes I do consider this just another
> > rename.
>
> It's an extension of an existing framework rather than an addition of a new
> one, with entirely new API and so on. Extending existing APIs is much
> preferred to adding new ones, in general.
>
> Rafael