On 12/24/2010 05:59 AM, Steven Haigh wrote:
Anyone have any ideas on this? :\

BIOS/platform issue is a common cause for the problem you are describing.

First is to see what scaling frequency are offered and you can do so by running...

"cat /sys/devices/system/cpu/cpu0/cpufreq/scaling_available_frequencies"

Next is to check what bios_limit the kernel sees and you can do so by running...

"cat /sys/devices/system/cpu/cpu0/cpufreq/bios_limit".

If "bios limit" reports the highest available scaling frequency while running plugged in and the lowest available scaling frequency when unplugged as in running on battery it is not the culprit.

Just run "watch -n1 "cat /sys/devices/system/cpu/cpu*/cpufreq/bios_limit"" and plug/unplug/plug on your laptop and the frequency should change from highest to lowest to highest again.

If it does not change frequency on battery or on AC or at specific temp or with a specific AC adapter you need to upgraded your bios to the latest for your manufacturer and search for SpeedStep, CPU frequency, P-state or power management related options ( often there are some knobs there that need to be set to "performance" ) in the bios and try changing it.

If turning all the bios knobs from "power save" or similar to "performance" or similar does not change the bios_limit you can override it by adding "processor.ignore_ppc=1" to the kernel line in grub or run "echo 1 > /sys/module/processor/parameters/ignore_ppc" to tweak it during runtime however be aware that there must be a reason why the vendor/OEM is limiting your frequency in the first place.

If "bios_limit" is not the cause for this start by trying the latest kernel versions for .35 .36 and .37 in koji and see if it's fixed in any of them if not you will need to file a bug report and make sure the kernel is compiled with CPU_FREQ_DEBUG=y and you boot with "cpufreq.debug=7" or run "echo 7 > /sys/module/cpufreq/parameters/debug" to tweak it during runtime and then attach "dmesg > dmesg.txt"  along with the output from "for x in /sys/devices/system/cpu/cpu0/cpufreq/*;do echo $x;cat $x;done && for x in /sys/devices/system/cpu/cpu0/cpufreq/ondemand/*;do echo $x;cat $x;done" to your report which should provide the maintainer with sufficient info to start working on your report.

Also take a look at various commands that come with the cpufrequtils package like cpufreq-info etc..

JBG