Re: PowerOp Design and working patch

david singleton
2006-08-01T00:36:24Z

On Jul 29, 2006, at 3:09 PM, Greg KH wrote:

> On Fri, Jul 28, 2006 at 10:12:26PM -0700, david singleton wrote:
>>
>> Greg,
>> perhaps I need to back up a bit. I wasn't submitting these patches
>> for inclusion into Linux. I was presenting them to the people
>> discussing
>> how power management might evolve in Linux.
>
> That's fine, but you should at least post them so we can read and
> comment on them from within our email clients then :)
>
> And also by breaking up the patches into small logical changes, it
> helps
> us to understand what they are doing and would allow us to evaluate
> them
> much better.
>
> thanks,
>
> greg k-h
>

Greg,
these emails describe a concept called power op that
shows how the various power management infrastructures in
Linux could be unified and simplified. This email describes
the concept of what power op is trying to do and how it works.

The following emails break a prototype patch into
three logical parts. The first patch is the powerop-core.patch
that adds support for an operating point in the standard linux
power management infrastructure (CONFIG_PM) and adds a new
function to perform transitioning to operating points other
than suspend to memory or disk.

The second patch adds the cpufreq portion of the patch
that makes cpufreq table a set of operating points.

The third patch adds some operating points for
the centrino-speedstep (the notebook I'm doing the prototype on)
and a centrino specific transition function.

The goal of these patches is not to show how the
concept of supported operating points should be implemented,
rather its intended to show that they can be unified and
greatly simplified.

All the power management infrastructures operate on
what can be conceptualized as an operating point. Once they
get down to the point where they start controlling power,
frequency
or voltage, they are transitioning from one operating point
to another. They all also follow the same steps to transition
from one operating point to another.

Powerop uses the traditional power management interface
of /sys/power/state but changes it a bit. When it's read it
shows
the current operating point of the system. Powerop uses a
second
sysfs file to present the list of supported operating points,
their
name, frequency, voltage and description, to the user.

The user sets the operating point of the system by
writing
the name of the operating point into the /sys/power/state file.

The goal of powerop is to both unify and simplify the
different power management infrastructures. It does this
by treating all supported states the system can be in as
different operating points that can be simply transitioned
to via the name of the operating point.

It simplifies power management by following the CPUFREQ
concept of a vendor specified and validated table of supported
operating points. In CPUFREQ the user is not allowed to
set the frequency or voltage of an operating point that might
hang the system, either inadverdantly or maliciously.

It also simplifies the code by putting all the
decisions
about when to transition to a new operating point in the
hands of the user. With this simple example patch the user
can manually switch between all the supported states of the
centrino speedstep.

The powerop-core.patch has more details in the
Documentation/power/power.txt file.

David