Commit aa464191 authored by Eugeni Dodonov's avatar Eugeni Dodonov Committed by Daniel Vetter

drm/i915: enable plain RC6 on Sandy Bridge by default

This is yet another chapter in the ongoing saga of bringing RC6 to Sandy
Bridge machines by default.

Now that we have discovered that RC6 issues are triggered by RC6+ state,
let's try to disable it by default. Plain RC6 is the one responsible for
most energy savings, and so far it haven't given any problems - at least,
none we are aware of.

So with this, when i915_enable_rc6=-1 (e.g., the default value), we'll
attempt to enable plain RC6 only on SNB. For Ivy Bridge, the behavior
stays the same as always - we enable both RC6 and deep RC6.

Note that while this exact patch does not has explicit tested-by's, the
equivalent settings were fixed in 3.3 kernel by a smaller patch. And it
has also received considerable testing through Canonical RC6 task-force
testing at https://wiki.ubuntu.com/Kernel/PowerManagementRC6. Up to date,
it looks like all the known issues are gone.

v2: improve description and reference a couple of open bugs related to
RC6 which seem to be fixed with this change.

References: https://bugs.freedesktop.org/show_bug.cgi?id=41682
References: https://bugs.freedesktop.org/show_bug.cgi?id=38567
References: https://bugs.freedesktop.org/show_bug.cgi?id=44867Acked-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: default avatarEugeni Dodonov <eugeni.dodonov@intel.com>
Signed-off-by: default avatarDaniel Vetter <daniel.vetter@ffwll.ch>
parent 83b7f9ac
...@@ -8239,11 +8239,11 @@ static int intel_enable_rc6(struct drm_device *dev) ...@@ -8239,11 +8239,11 @@ static int intel_enable_rc6(struct drm_device *dev)
* Disable rc6 on Sandybridge * Disable rc6 on Sandybridge
*/ */
if (INTEL_INFO(dev)->gen == 6) { if (INTEL_INFO(dev)->gen == 6) {
DRM_DEBUG_DRIVER("Sandybridge: RC6 disabled\n"); DRM_DEBUG_DRIVER("Sandybridge: deep RC6 disabled\n");
return 0; return INTEL_RC6_ENABLE;
} }
DRM_DEBUG_DRIVER("RC6 enabled\n"); DRM_DEBUG_DRIVER("RC6 and deep RC6 enabled\n");
return 1; return (INTEL_RC6_ENABLE | INTEL_RC6p_ENABLE);
} }
void gen6_enable_rps(struct drm_i915_private *dev_priv) void gen6_enable_rps(struct drm_i915_private *dev_priv)
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment