This is the first post in the Power Savings post series I’m just starting to write.
I know there is nothing really new and exciting in this post once RC6 is a feature available for a coupe of years now and already enabled by default at our driver. However is the easiest topic to start with and I couldn’t let it out of the list, mainly because this is the most efficient power saving feature supported by our driver so far.
RC6 stands for Render C-State which is a low voltage state for the graphics processor. This state is entered when the graphics render engine, blitter engine and the video engine have no workload being currently worked and no outstanding graphics memory transactions.
Currently our kernel driver (i915) supports RC6 only for 2nd Generation Intel® Core™ Processors with Intel® HD Graphics (SandyBridge), 3rd Generation Intel® Core™ Processors with Intel® HD Graphics (IvyBridge) and 4th Generation Intel® Core™ Processors with Intel® HD Graphics (Haswell).
One frequent question is: how many render states does Intel GPU has, i.e. does it has RC1, RC2, RC3, RC4, RC5? The answer is: No, we only have RC6. Or GPU is on RC6 state or it is out. Low voltage or Normal voltage. However on SandyBridge and IvyBridge there are deep RC6 (RC6p) and deepest RC6 (RC6pp) states available, what means even lower voltage states. By default on SandyBridge only RC6 is enabled and on IvyBridge both RC6 and deep RC6 are enabled.
In Haswell RC6 is also enabled by default.
In order to change default configurations you must give kernel cmdline boot flag: i915.enable_rc6, where different stages can be selected via bitmask values. (0 = disable; 1 = enable rc6; 2 = enable deep rc6; 4 = enable deepest rc6). For example, 3 would enable rc6 and deep rc6, and 7 would enable everything.
Most of known issues caused by RC6 are GPU hangs. So if you are facing any gpu hung or any other issue we recommend you to disabled by using i915.enable_rc6=0 and report a bug at https://bugs.freedesktop.org following our How to report bugs tutorial.