Intel Tries To Fix RC6 Support Once Again
For those that aren't familiar with Intel RC6 at this stage, you must read more Phoronix articles as it's been routinely covered in past months. To get up to speed, read SNB RC6 On Linux 3.1 Is Both Good & Bad where it outlines the power-savings abilities of this hardware feature, which allows the Intel graphics processor to be dropped into a lower-power state. At the same time as conserving precious energy, RC6 can also boost graphics performance as Phoronix benchmarks have shown in other articles.
Unfortunately for a select number of systems, having RC6 enabled has caused issues when booting and/or lock-ups. There's also a more problematic deeper RC6 state, but Sandy Bridge and Ivy Bridge RC6 support was enabled for Linux 3.2 and then quickly reverted as it still was causing problems, among other failed attempts by Intel to support this feature. Sandy Bridge is the first Intel generation of hardware to support RC6, which is where the Linux support is buggy, but under the next-generation Ivy Bridge hardware is where RC6 support is said to be more stable and is still enabled by default in the mainline kernel.
RC6 is really great as the power savings tend to be significant and the performance boost is also measurable and welcomed. Seeing Intel not be able to nail this feature by default but rather relying upon using the i915.i915_enable_rc6=1 parameter to tap this power-savings has been unfortunate as most Linux users are likely unaware of its existence. Fortunately, Eugeni's latest patches might finally be in order.
From the Intel mailing list on Saturday:
so far, apparently all the RC6-related issues on Sandy Bridge seem to be gone when we enable RC6 but do not enable deep RC6. This apparently also cures the symptoms we were seeing with RC6 when VTd was active, so in theory we won't need the intel_iommu duct-taping anymore.
Somehow, we haven't attempted to flip the default RC6 status once again this year (yet), so this seems to be a good timing to get this into -next and ask the ones affected by RC6 bugs with 3.2 kernel to test. If this indeed would fix the problems with rc6, I guess we can slip this into -fixes; but with all the RC6 default status flip-flopping of the past months I prefer to be sure that it won't get reverted once again.
Note that this patch also gives a way to get into deepest rc6 - but it really never should be enabled by default. It is provided merely as a way to easy the debugging of those RC6 issues in the future.
This sounds quite promising, especially that RC6 should now play well when Intel VTd support is enabled. Landing his two RC6 patches into the "-next" branch would mean that the revised RC6 support would go into the Linux 3.4 kernel in the coming months. If everything pans out there, it could hit "-fixes" so the patches could would work their way back to the stable branches (sadly, probably too late for the initial release of Ubuntu 12.04 LTS).
In terms of the deeper RC6 states that still won't be on by default due to issues, those are still toggled by the i915.i915_enable_rc6 kernel parameter. However, rather than just using a value of 1 to enable the support, setting it to 3 would enable deep RC6, a value of 5 would enable the deepest RC6 state, and a value of 7 would enable everything.
More Phoronix tests of Intel RC6 are being conducted.