SpeedStep and cpufreq.

This is a try to get speedstep working under Linux, via the cpufreq API. Speedstep is a technology from Intel in order to switch the frequency and the voltage of a processor.

Different speedstep technology

The intel speedstep technology need both support from CPU and from others hardware chipsets (northbridge, southbridge, a propritary ASIC, etc.). Therefore, you need to know what is the processor, what is the chipset inside your laptop, etc. It was also stated that the chipsets actually are more important for SpeedStep. Note also that Celeron are not SpeedStep capable.

This site is devoted for the old kind of speedstep, that is PIIX4E and ALi chipsets. Note that it is hard to get it working, since Intel continue to not give enough information, although this technology is completely outdated by other processor vendors, and by themself (Enhanced Speedstep).
It may be possible that in fact, writting documentations will cost more for Intel than just ignoring requests from developers.

A patch to cpufreq

This information is now outdated by the newer speedstep-smi driver from Hiroshi Miura. That driver is already included in cpufreq, and I believe it is more safe than the (now outdated) speedstep-piix4 driver. Please use that driver for stability reason.

Note that you can use speedstep-detect in order to check if you can use speedstep-smi, or not. The GSIC call have to be OK. If not, perhaps you can try to check an BIOS options?

There may be a problem with that driver. At least for 2 guys (including me and Dominik Brodowski), the smi command is reported as being 0x80, but is actually 0x82. It was then necessary for this 2 guy to pass the module option:

modprobe speedstep-smi smi_cmd=0x82

Sometimes, speedstep-detect will fail to detect the GSI interface. You will see something like that:

BIOS DO NOT support GSIC call.  Dumping registers anyway:
eax = 0x00008680
ebx = 0x00000000
ecx = 0x00000000
edx = 0x47534943
Note also that some BIOS do not support the initial GSIC call, but the newer
speeedstep-smi driver may work.
For this, you need to pass some arguments to the speedstep-smi driver:
        smi_cmd=0x?? smi_port=0x?? smi_sig=1
...
...
If your southbridge is a PIIX4, you should try those values (they are safe, I believe):
modprobe speedstep-smi smi_port=0xb2 smi_cmd=0x82 smi_sig=1
This has been reported to work for a lot of people (sometimes, a BIOS upgrade will allow you to not pass those options anymore).

You can check the older page for the older driver here: speedstep-piix4.html

How to get cpufreq

cpufreq can be retrieved by cvs like this:

For kernel 2.5 and 2.6-test:

speedstep-smi is in current 2.6-test.
for kernel 2.4:
cvs -d:pserver:cvs@pubcvs.arm.linux.org.uk:/mnt/src/cvsroot co -rLINUX_2_4 cpufreq