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

From: Rafael J. Wysocki
Date: Mon May 31 2010 - 17:37:48 EST


On Monday 31 May 2010, Arve Hjønnevåg wrote:
> 2010/5/29 Alan Stern <stern@xxxxxxxxxxxxxxxxxxx>:
> > 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?

> 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
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/