So here's the little story/mess:
I have that XPS M1330 running cpufreq successfully in Ubuntu 8.10 kernel 2.6.27-7-generic with ondemand, performance, userspace and conservative governors available.
I've also got cpufreq_acpi and speedstep-centrino modules correctly loaded.
I've been using a simple cpufreq 'ondemand' setup that comes with ubuntu stock without any problems, ( i.e. choses between 800mhz and 2.4ghz depending on load) but I wanted to make it more "intelligent", i.e. switch from a 'performance' running at 2.4ghz when plugged in and when running on battery, keep the original 'ondemand' (800000-2400000) mode.
I thus installed cpufreqd 2.3.3-1 (from the repos), reading somewhere that it was more efficient than laptop_mode scripts and I thus checked that every section related to CPU control in laptop_mode config files was commented out.
I used a very simple cpufreqd configuration (/etc/cpufreqd.conf) as follows, which is used by the daemon ran at startup (init.d):
Now for the best part of this:
ac=on # (on/off)
name=AC Off - Medium Battery
ac=off # (on/off)
name=CPU Too Hot
cpufreqd has absolutely no problem detecting the AC on/off (eventhough it 'craps' the daemon.log with battery status access errors (searching energy_full and energy_now instead of charge_full and charge_now, but this should have been corrected in 2.3.3)) and it even manages to switch between different profiles, but when switching to the 'ondemand' profiles the CPU frequency is locked at 800mhz.
i.e. the file /sys/devices/system/cpu/cpu*/cpufreq/scaling_max_freq and scaling_min_freq contain '800000' and cpufreq-info states that both cores are in 'ondemand' governor mode that choses between 800mhz and 800mhz.
All my cpufreq settings seems to be fine, here's the contents of the files located in /sys/devices/system/cpu/cpu*/cpufreq/ :
analyzing CPU 1:
CPUs which need to switch frequency at the same time: 0 1
hardware limits: 800 MHz - 2.40 GHz
available frequency steps: 2.40 GHz, 2.40 GHz, 2.00 GHz, 1.60 GHz, 1.20 GHz, 800 MHz
available cpufreq governors: ondemand, conservative, powersave, userspace, performance
current policy: frequency should be within 800 MHz and 800 MHz.
The governor "ondemand" may decide which speed to use
within this range.
current CPU frequency is 800 MHz (asserted by call to hardware).
I've spent a lot of time trying to understand what the problem is, I've even tried to add an exec_post parameter in order to modify scaling_max_freq to 2401000 (or 2400000) at the end of the cpufreqd.conf profile, and according to the daemon.log it runs fine (exit 0)
2401000 2400000 2000000 1600000 1200000 800000
ondemand conservative powersave userspace performance
exec_post=echo 2401000 > /sys/devices/system/cpu/cpu0/cpufreq/scaling_max_freq
exec_post=cpufreq-set -g ondemand -u 2400000
but it doesn't change squat in the file (I've double-checked monitoring file modifications with fileschanged) eventhough it works when I do it manually.
The strange thing is that if I restart the cpufreqd daemon when the laptop is unplugged, sometimes (yes only sometimes) the scaling_max_freq file is correctly set to 2400000, then if I replug the laptop it correctly switches to performance-2400000-2400000, but as soon as I unplug it it falls back into the ondemand-800000-800000 eventhough the config specifies otherwise.
I haven't been able to set ondemand with max to 2400000 and min to either 1200000,1600000 or 2400000 for that matter.
Here's a cat /proc/cpuinfo for the record:
and an lsmod | grep -i freq
processor : 0
vendor_id : GenuineIntel
cpu family : 6
model : 23
model name : Intel(R) Core(TM)2 Duo CPU T8300 @ 2.40GHz
stepping : 6
cpu MHz : 2401.000
cache size : 3072 KB
physical id : 0
siblings : 2
core id : 0
cpu cores : 2
apicid : 0
initial apicid : 0
fdiv_bug : no
hlt_bug : no
f00f_bug : no
coma_bug : no
fpu : yes
fpu_exception : yes
cpuid level : 10
wp : yes
flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe nx lm constant_tsc arch_perfmon pebs bts pni monitor ds_cpl vmx est tm2 ssse3 cx16 xtpr sse4_1 lahf_lm ida
bogomips : 4787.99
clflush size : 64
I've also tried to switch the /etc/default/cpufreqd config so as to use centrino-speedstep without success, and raising the verbosity level in cpufreqd doesn't help since there's no obvious 'error' per se and all the Profiles are apparently correctly configured (verified using cpufreqd-get).
acpi_cpufreq 15500 1
cpufreq_ondemand 14988 0
cpufreq_stats 13188 0
cpufreq_conservative 14600 0
freq_table 12672 3 acpi_cpufreq,cpufreq_ondemand,cpufreq_stats
cpufreq_powersave 9856 0
cpufreq_userspace 11396 0
processor 42156 4 acpi_cpufreq,thermal
So I mean... What the hell ?? Has anyone any idea of what that mess is about ?
Thankfully I can just disable cpufreqd and use the normal ondemand mode but I cannot switch dynamically depending on the power source...