How to get SpeedStep working on Coppermine-piix4-smi based ThinkPads
Foreword
- APPLYING THIS HOWTO MAY MAKE YOU DUMB, CRASH YOUR CPU, YOUR MOTHERBOARD, MAKE YOUR GIRLFRIEND LEAVE YOU, OR MAYBE WORSE, USE IT AT YOUR OWN RISKS, I'M NOTHING OF A KERNEL HACKER, NEITHER A SMART GUY, THIS IS HOW I TRYED TO GET IT WORK, AND TILL NOW IT IS WORKING, MY PROPOSITION ARE ALMOST GUARANTED TO BE DUMB.
- This HowTo is intended for people having trouble getting SpeedStep working via CpuFreq on their Coppermine CPU with a piix4 mainboard.
- Thinkpads known to have this configuration are the X20, X21, X22, X23, X24, T20, T21, T22 and possibly A2x models.
- The issue is that these CPU do not repport correctly that they are SpeedStep capables
- This Document is under the GNU/GPL v2+ Licence.
My case
- This is what i get:
- I have a x21 IBM ThinkPad, and when trying the SpeedStep implementation of 2.6 kernels i got:
[xaiki@gonzo]:~% sudo modprobe speedstep-smi FATAL: Error inserting speedstep_smi (/lib/modules/2.6.10-rc1-mm4-xa1/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-smi.ko): No such device
- Rebooting with cpufreq.debug=7 ( 1 is for core, 2 is for ??, and 4 is for drivers, 7 = 1 + 2 + 4 ) gave:
[xaiki@gonzo]:~% sudo modprobe speedstep-smi FATAL: Error inserting speedstep_smi (/lib/modules/2.6.10-rc1-mm4-xa1/kernel/arch/i386/kernel/cpu/cpufreq/speedstep-smi.ko): No such device [xaiki@gonzo]:~% sudo tail /var/log/syslog [...] Nov 11 19:54:20 localhost kernel: speedstep-lib: x86: 6, model: 8 Nov 11 19:54:20 localhost kernel: speedstep-lib: Coppermine: MSR_IA32_EBL_CR_POWERON is 0x44080020, 0x0 Nov 11 19:54:20 localhost kernel: speedstep-lib: Coppermine: MSR_IA32_PLATFORM ID is 0x0, 0x540000 Nov 11 19:54:20 localhost kernel: speedstep-smi: No supported Intel CPU detected.
How to get it work
- Note: to get this working on recent kernels you'll need:
CONFIG_X86_SPEEDSTEP_RELAXED_CHECK = y
- Easy =) just disable the speedstep-lib checks
[xaiki@gonzo]:~% sudo modprobe speedstep-lib relaxed_check=1 [xaiki@gonzo]:~% sudo modprobe speedstep-smi
- Hurrah !!
- In Debian ( and probably with others, please confirm ), you can automate the module parmeters by creating a /etc/modprobe.d/speedstep-lib file with:
options speedstep-lib relaxed_check=1
- And then, you may add /etc/modules these 2 lines:
speedstep-lib speedstep-smi
How to use it
How to make use of Dynamic Frequency Scaling
What's not working
- The speeds showed may be erroneous, witch has dramatic consequances if you try to watch movies or applications that are (exact) time-depending ( as the timer is all dizzy )