In an effort to get the same performance from this laptop as I used when it ran windows (and I could use the excellent ThrottleStop program to undervolt), I did some investigation into how to undervolt while running Linux.
The solution turns out to be the Linux PHC Project. There wasn’t a patch for Linux 4.1.4, but looking in the forums a bit I found a patch for 3.1, which cleanly applied to 4.1.4. I didn’t bother with their suggested way of building a module, I just patched the file in the Linux source tree directly and rebuilt the kernel. Because the tree was already patched with grsecurity, the diff spat out a bunch of offset changes, but all the changes applied correctly which is all that matters. I checked to ensure that nothing grsecurity/PaX related had been mangled.
Recompile, reboot and now I have the following sysfs interfaces:
/sys/devices/system/cpu/cpu*/cpufreq/phc_default_rawcontrol /sys/devices/system/cpu/cpu*/cpufreq/phc_default_vids /sys/devices/system/cpu/cpu*/cpufreq/phc_rawcontrols /sys/devices/system/cpu/cpu*/cpufreq/phc_version /sys/devices/system/cpu/cpu*/cpufreq/phc_vids
Writing same values there as I used to use under Windows and now my laptop is so much cooler. Before when I built a kernel it was getting up towards 90c and it was limiting the CPU to keep itself getting hotter. Now I can build a kernel, I get nowhere over 75c and it stays at the full 2.20Ghz the entire time.
Original VIDs: cat phc_default_vids 47 41 28 18 11 New VIDs: cat phc_vids 30 27 23 13 6
Excellent! Thanks Linux PHC Project.