Re: nokia 770 [was Re: community PM requirements/issues and PowerOP]

Dave Jones
2006-12-14T12:12:14Z

On Thu, Dec 14, 2006 at 01:14:13PM +0300, Dmitry Krivoschekov wrote:

> > > Ok, let's reword my sentence. The cpufreq interface does not support
> > > voltage as a parameter
> >
> >Please explain why this is useful at all.
> >Under what circumstance is "Set the CPU voltage to 1.2V" a useful thing
> >for a user, sysadmin, or application to do ?
> >
> >
> Voltage scaling is a well known technique to reduce power consumption, try
> google search "Dynamic voltage scaling" if you are intrested in it.

You've missed the point. I'm well aware of dynamic voltage scaling,
and some of the cpufreq drivers I've written do this.

> I agree, in most cases we don't need to scale CPU voltage and frequency
> independently since CPU frequency usually coupled with appropriate voltage
> to set.

A CPU frequency _always_ has a specific voltage associated with it.

> But some CPU's permit to choose frequency value for
> a given voltage or vice versa

But what sense does it make for a user,sysadmin or application
to change voltage? If any of these want to save power, they do so
by a) doing less work, and then b) lowering the clock speed as this
is inherently tied to voltage.

And if you lower voltage, you *MUST* reduce the frequency anyway.
Running CPUs at higher speeds at lower voltages than those frequencies
are rated for is a fastpath to a crash.

This is one fundamental reason I'm opposed to exporting voltages to userspace.
Because people _will_ get this wrong, and we will see all manner of
strange bugs and crashes reported from people running CPUs at higher
speeds than the voltage is rated for.

By putting this into the hands of userspace, we're setting ourselves up
to fail. How does userspace/users know what voltage is safe for what frequency?
Without being intimate with the CPU datasheets, they're almost guaranteed
to fail. The _driver_ needs to know the pairings of voltage/frequency
and export the only thing that makes sense.

> Also, CPU is not the only power consumer in the system, you may need to
> scale voltage for other devices to get a best perfomance/power trade off.
> And here is an obvious limitation of cpufreq since it takes care only
> about CPU.

You see it as a limitation, I see it behaving 'as designed'.
If those devices have nothing to do with the CPU, why are they even
relevant to this discussion?

The argument seems to be "cpufreq only cares about CPU frequency, therefore
we need something different". But, why? I see no reason why we need
to change cpufreq at all, just add additional interfaces to cover those
other devices, as they're unrelated anyway. And if there *are* any
devices that are related, they can be tied into the existing cpufreq
drivers just as for eg, the sa1100 drivers scale DRAM timings with CPU speed.

Dave

--