Re: Alternative Concept

David Brownell
2007-03-20T21:03:10Z

On Tuesday 20 March 2007 5:39 am, Igor Stoppa wrote:

> No, the point is that by default every driver would try to go to the
> lowest power state autonomously.

Yes. Anyone assuming otherwise should go back to the drawing board,
since so much of the most relevant information will BY DESIGN never
be exposed outside that driver. And must not be, since each version
of silicon will generally have its own localized quirks.

Plus there may be groups of drivers that work together. SOC audio
is probably a decent example: the high level driver presents just
playback and record interfaces, but internally there will be several
busses involved, a SOC-specific serial data stream controller (AC97,
McBSP, I2S, etc), an external codec, and control interfaces which
manage each of those. That means a couple drivers collaborating...
(I have no idea if this new ALSA SOC support stuff is sanely design
from a PM perspective...)

The same thing comes up with some USB OTG configurations too.
For example, on OMAP1 or PXA27x chips, there are three on-chip
controllers (OHCI, UDC, OTG) plus an external (I2C) transceiver.
That's three or four drivers which must work together to make
sure power isn't needlessly wasted.

But in all those cases, all the PM-relevant information is local
to those drivers, and all they need is private interfaces to sort
things out. No new "system-wide" component (policy or otherewise)
is needed.

> The policy layer (or whatever would
> take care of the system point of view, in case the decentralised
> approach is not enough) would _prevent_ temporarily certain deeper power
> saving states.

Yes, but ...

There are two "power management" models. I think you are talking
about the one most relevant to low power operation: "runtime PM".
Something like an N770 or N800 tablet needs that(*), and of course
a Linux laptop would benefit from it quite nicely too.

The "system suspend" model works the other way around: when the
system is forced into a specific low power state, that prevents
certain drivers from working. For example, it's common that USB
must in effect be powered off, unable to serve as a wakeup event
source (or maintain power sessions) because a key clock must be
turned off in order to enter that state.

- Dave

(*) Plus a smart idle loop ... using NO_IDLE_HZ and entering into
SOC-wide deep sleep states rather than just CPU idle. A partial
PC analogue would be using the new NO_HZ and C3 or deeper.

To me, it's suggestive that all this discussion about power
frameworks has mentioned neither that, nor several other
essential mechanisms, like the "run from SRAM" case that I
mentioned earlier. Without addressing a few such real
problems, the email discussions can't produce good results.