PHC ACPI_CPUFreq module patch
This afternoon I compiled an x86_64 acpi-cpufreq module with the 2.6.24pre Linux PHC patch. It works with the default Ubuntu Hardy kernel. I was having trouble getting one that matched my running kernel for quite a while. Turns out the kernel is from 2.6.24.3 upstream, and you want to get the sources through the standard ubuntu utilities.
This guy
has been dishing out an x86 version of the module which you can
just plop in as
/lib/modules/<kversion>/kernel/arch/x86/kernel/cpu/cpufreq/acpi-cpufreq.ko,
but I didn’t realize for a while that it wasn’t x86_64. (The “x86″ in
the above path doesn’t change either way.)
Long in the short of it is that I recompiled the module for cpu type “Generic x86-64″ (not the Core2 / Xeon option) and you can download it - acpi-cpufreq kernel module for 2.6.24-16-generic kernel (ostensibly probably works for much of 2.6.24.) There are a substantial amount of changes to ACPI and CPU scaling in 2.6.25, though, so there will need to be “some” labor invested in updating the PHC patch, I would think. Anyway, just grab the .ko module from the tarball linked above and throw it in the directory I mentioned above. Make sure you backup the original first!
How does it work?
It’s alright. I am using the PHCtool with it at the moment. There appears to be a hard lower bound of VID = 19 on my processor (and ostensibly on all Penryn family CPU.) 19 is the default VID for the lowest frequency step, at 800Mhz. For most of the daily operation of the computer, the processor is always in that slot anyway. So really, the PHC patch isn’t buying me much for voltage reduction.
Of course the higher frequency steps do have higher default VID, and you can lower those. But what I’d really like to do is just get the 800Mhz level down to 17 or so. As it is, I’ve reduced the 1200MHz and 1600MHz levels by a few VID, and have set a maximum frequency step of 1600MHz, so that I’ll never be using power up in that range. I can turn off the boundary when I’m compiling software on AC, afterall. This is a battery life stunt.
MSRinfo
msrinfo is a little utility with which you can check to make sure PHC is working. The compilation was fairly easy to debug - clear output: “You need to install automake-1.9,” and things of that nature.
That being said, some people don’t like to compile software, but install binaries. As I found no packages of msrinfo referenced on the web, I took it upon myself to create a .deb package for it. Try out my x86_64 Hardy 8.04 package of msrinfo, msrinfo_0.3.5_amd64.deb. Let me know if it works for you - I’m a bit new to package creation.
Here is the output of msrinfo for the Intel T9300:
jameson@salmon$ sudo msrinfo
Detected 2 CPUs
Vendor: 0
Family: 6
Model: 23
Mask: 6
Unknown CPU type! (Please send your /proc/cpuinfo to <b12_1971@yahoo.fr>)
CpuFreq info:
CPU 0: driver = acpi-cpufreq, governor = ondemand
CPU 1: driver = acpi-cpufreq, governor = ondemand
MSR registers:
CPU 0: PERF_CTL=0x0000000000008811, PERF_STATUS=0x06174c2206008813, FSB_FREQ=0x00000000000001a2
CPU 1: PERF_CTL=0x0000000000008811, PERF_STATUS=0x06174c2206008813, FSB_FREQ=0x00000000000001a2
| CPU 0 | CPU 1 |
+-------+-------+-------+-------+
| FID | VID | FID | VID |
--------+-------+-------+-------+-------+
Min | 6 | 23 | 6 | 23 |
Max | 76 | 34 | 76 | 34 |
--------+-------+-------+-------+-------+
Target | 136 | 17 | 136 | 17 |
Current | 136 | 19 | 136 | 19 |
--------+-------+-------+-------+-------+
Frequency estimations based on TSC:
CPU 0: core = 2493.55 MHz, bus = 18.335 MHz
CPU 1: core = 2493.47 MHz, bus = 18.3343 MHz
Frequency estimations based on BogoMIPS from /proc/cpuinfo:
CPU 0: core = 2496.24 MHz, bus = 18.3547 MHz, bogomips = 4992.49
CPU 1: core = 2493.76 MHz, bus = 18.3365 MHz, bogomips = 4987.53
Frequency estimations based on measured BogoMIPS:
CPU 0: core = 797.9 MHz, bus = 5.86691 MHz, bogoratio = 3.125
CPU 1: core = 797.885 MHz, bus = 5.8668 MHz, bogoratio = 3.125
Frequency estimations based on the FSB_FREQ MSR register:
Invalid bus clock ID found in the FSB_FREQ MSR register: 2.
This may be normal if you don't have a Intel Core processor
CPU 0: core = failed, bus = failed
Invalid bus clock ID found in the FSB_FREQ MSR register: 2.
This may be normal if you don't have a Intel Core processor
CPU 1: core = failed, bus = failed
In order to use MSR, you’ll need CONFIG_X86_MSR configured on for
your kernel, and you’ll need to pop in the module before using the
utility:
modprobe -i msr
PHCTool
To be quite honest, I think it’s probably better to write a startup script to set the values you want in your config files, but the PHCTool is a nice little python-based front-end. Here’s what it looks like:

Conclusions
Basically, I’m let down by the 19 VID lower bound that is imposed on the processor. Maybe you’ll have better luck, though, or don’t intend to be running at 800MHz default as I do.
I had to switch to a different theme… Not because I needed a change, but because Oxford wouldn’t play nice with 2.5.
I’ve always liked the Hemingway-based
themes, but the one I found was compatible with everything on
the back end–lightbox most notably, and anything
java-needing.
I then took it and tweaked the heck out of it, and was able to get the theme author to put a sub-header type thing so my random quotes could stay
I’ve got the link posted somewhere on the site if you ever want it, simply search for Hemingway! Keep in touch!!