Re: [RFD] Automatic suspend

From: Arjan van de Ven
Date: Mon Feb 16 2009 - 10:38:44 EST


On Sun, 15 Feb 2009 22:23:04 -0800
Roland Dreier <rdreier@xxxxxxxxx> wrote:

> > > (2) put given subset of devices into low power states whenever
> > > they are not used, without putting the entire system into a
> > > sleep state.
>
> > For (2), for me the answer is very obvious:
>
> > The Device Driver needs to make the decision to put the device to
> > sleep. There are no ifs and buts about this.
>
> For PC-like systems this is probably all that needs to be said.
> However for highly integrated SoC systems (as Android is obviously
> targeting) there is another level of complexity due to the
> interdependency among various devices... eg things like if I know the
> SD controller and the wifi chip are both asleep then I can put my
> SDIO controller to sleep; and if the SDIO controller and the NAND
> controller are both asleep then I can stop clock X and save more
> power; etc etc.

This does not change the rules.
The individual drivers still make up the decision of what state their
own block should be in.

What you're talking about is coordination. Some systems do this in
silicon, and others, like you mention, need a small software layer to
do this coordination. Fine. But this doesn't change the fundamentals.

>
> This is what the PowerOp/DPM work was all about. Unfortunately that
> doesn't seem to have made much progress upstream.

PowerOP/DPM were... more or less hampered because they operated in
global "modes". Everyone (including the OMAP guys) has pretty much gone
away from the idea that modes are global. Power management is not
global; if you treat it as global then you're in trouble, since the
decisions really are local (and in better hw, even done in the hw)



--
Arjan van de Ven Intel Open Source Technology Centre
For development, discussion and tips for power savings,
visit http://www.lesswatts.org
--
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/