This post is also available on/was written for OMG! Ubuntu

This blog post isn’t only directed to ThinkPad owners as most notebook Linux users with Intel Core Duo 1/2 and i3/i5/i7 processors have been affected by this bug if not all. And yes, this problem is present on latest Debian Unstable and Ubuntu 11.10.

Prelude

I’m owner of Thinkpad X300, great machine except the fact that just recently I replaced its 3rd cooling fan! Yea, I do a lot of compiling and it’s on all the time, but still this kind of things shouldn’t happen. I first linked this problem to the fact that Thinkpad fan on Linux (as of 2.6.22) always works at what’s its basically maximum RPM, thus the reason there are numerous fan control scripts. My favorite one is Thinkfan, but controlling fan doesn’t really help if you have a overheating problem. For matter of a fact it working on its maximum speed might only help, with its own toll.

As of kernel 2.6.38 up until 3.1 (still present) there has been a problem of power regression but besides this I had slight problem with overheating. Regarding overheating in beginning I tried reporting bugs, tried different Thinkfan configurations, blamed proprietary software such as Adobe Flash for spiking up CPU temperature, however this problem was somewhat solved. After numerous battery calibrations and as these didn’t work in the end for battery life getting poorer with each day, I just blamed the factor that notebook was getting pretty old (~3 years).

Then the consumer woke up inside of me and I thought it was time to get new notebook. I laid my eyes upon ThinkPad X1 thing of beauty except one mayor drawback, its price. I did some reading on X1 and interesting enough, X300 comes with Core Duo 2 L7100 but overheating + power regression was still present even on latest Intel Core I* series. Reading this killed the consumer and woke up the hacker side.

Solution

Initial workaround to the problems of power regression is to add “pcie_aspm=force” besides existing GRUB boot arguments, this did help to some point but what really helped in both cases was also adding “i915.i915_enable_rc6=1” or at least I thought so since this line only applies to Sandy Bridge (i3/i5/i7) and latter. In the end my “/etc/default/grub” looks like:

GRUB_CMDLINE_LINUX_DEFAULT="quiet splash pcie_aspm=force i915.i915_enable_rc6=1"

and make sure you run “update-grub” after making these changes. Besides the arguments I used there are other ones you can use and for more info please head to “Tweaks To Extend The Battery Life Of Intel Linux Notebooks“.

Results I ended up with such simple tweak are more then satisfactory as I got some ~45 extra minutes of battery life besides the fact that it lowered temperature by some ~10 °C. Guess this also gives me extra time until I get a chance to lay my hands on X1 :)

P.S:

After I posted this some argued that this is a workaround rather then a fix and folks at [Phoronix] just posted what they call a proper solution to this problem. Also please note although Sandy Bridge users that enable this might sometimes get a video corruption bug, i915_enable_rc6 is still supposed to get enabled by default in 3.2. So logical conclusion you can come up with is unless you’re troubled by this problem, you might not want to use this “work around/fix” at this point. And hope it’ll be fixed in future releases of your favorite Linux distribution.