[Bugme-new] [Bug 4260] New: Dell Inspiron 8600c's BIOS changes
P-state when running on full batteries
bugme-daemon at osdl.org
bugme-daemon at osdl.org
Sun Feb 27 03:00:26 PST 2005
http://bugme.osdl.org/show_bug.cgi?id=4260
Summary: Dell Inspiron 8600c's BIOS changes P-state when running
on full batteries
Kernel Version: 2.6.10
Status: NEW
Severity: normal
Owner: acpi_bios at kernel-bugs.osdl.org
Submitter: dg-kernel-bug at zapek.com
CC: Matt_Domsch at dell.com
Distribution: Debian/unstable
Hardware Environment: Dell Inspiron 8600c BIOS A13
Problem Description:
The BIOS changes power state when switching to batteries even when the battery
is full and doesn't notify the kernel when AC is plugged back.
Steps to reproduce:
Machine ranges from 600MHz to 1.4GHz. SpeedStep is enabled in the BIOS. There
is no speedstep daemon like cpudyn or anything. My problem is that the machine
gets stuck to 600MHz when I switch to batteries, this is how I reproduce the
problem (works everytime).
- make sure we are on AC
- make sure scaling_governor is performance
- make sure we are running at 1.4GHz (cat /proc/cpuinfo)
- switch to powersave (I use echo "powersave" >cpu_governor)
- check that it's running at 600MHz, all fine
- switch to batteries
- check that it's still running at 600MHz, it is
- switch again to performance
- in the log comes a:
Warning: CPU frequency is 1400000, cpufreq assumed 600000 kHz.
- but the cpu frequency stays at 600MHz. There's no other way than to
reboot to get it back at 1.4GHz. Even with AC plugged back.
There are some conclusions by Dominik Brodowski while he tried to implement a
workaround:
Thanks. Now I understand the problem. The BIOS tells the ACPI subsystem to
limit the CPU frequency to 600 MHz when you switch to battery power, which
may be necessary if the battery can't fulfil the needs of a CPU running at
full frequency.
If the AC adapter is plugged back in, the BIOS doesn't tell the ACPI
subsystem of it, though. So the ACPI subsystem still limits the CPU
frequency to 600 MHz.
What we can try to do is to explicitely ask the BIOS what the current limit
for the frequency is. The attached and untested patch tries to implement
this.
And another:
On Thu, Feb 10, 2005 at 07:50:37PM +0100, David Gerber wrote:
> On Thursday 10 February 2005 18:36, you wrote:
>
> > Sorry about that. Please try this patch instead.
>
> Ok, seems better. But there's a timing issue:
>
> - boot on AC (performance as default)
> - switch to powersave
> - switch to batteries and wait about 20 seconds
> - it prints "Warning: CPU frequency is 1400000, cpufreq assumed 600000 kHz"
> - switch to performance
> - it works.. 1.4 GHz
>
> if I do that same without the waiting 20 seconds (that is.. switching to
> performance before the warning is printed), it stays at 600 kHz forever.
>
> Plugging the AC back doesn't change anything. If I switched to performance
> before getting the warning it stays at 600 kHz no matter what.
>
> Here's a log of what happens if I don't wait these 20 seconds (the message
> comes out afterwards then, and prints the same).
>
> Also this is interesting as it currently (if I wait 20 seconds at least)
> allows me to use the full frequency range even on batteries. But this could
> be used to allow people to minimize the frequency when being run on
batteries
> (through another governor or so).. anyway, just an idea. Might not even be
> possible since the bios doesn't seem to tell anything when it's put back on
> AC.
This all sounds like some serious BIOS bug. BIOS should only limit P-states
(and keep it that way) if the battery isn't strong enough for it while
running on battery power. And it should notify the kernel of all such
changes. Is there a BIOS update available? Also, Dell is improving its Linux
support, so you might have success contacting them on this issue.
------- You are receiving this mail because: -------
You are on the CC list for the bug, or are watching someone who is.
More information about the Bugme-new
mailing list