blob: 61d0d44aab7d67a89a3a8f442e21625debadcfff [file] [log] [blame]
From abb221042ebe297834475c54eeb9061480e0f280 Mon Sep 17 00:00:00 2001
From: Daniel Vetter <>
Date: Sun, 21 Jul 2013 13:16:24 +0200
Subject: drm/i915: fix up gt init sequence fallout
The regression fix for gen6+ rps fallout
commit 7dcd2677ea912573d9ed4bcd629b0023b2d11505
Author: Konstantin Khlebnikov <>
Date: Wed Jul 17 10:22:58 2013 +0400
drm/i915: fix long-standing SNB regression in power consumption after resume
unintentionally also changed the init sequence ordering between
gt_init and gt_reset - we need to reset BIOS damage like leftover
forcewake references before we run our own code. Otherwise we can get
nasty dmesg noise like
[drm:__gen6_gt_force_wake_mt_get] *ERROR* Timed out waiting for forcewake old ack to clear.
again. Since _reset suggests that we first need to have stuff
initialized (which isn't the case here) call it sanitze instead.
While at it also block out the rps disable introduced by the above
commit on ilk: We don't have any knowledge of ilk rps being broken in
similar ways. And the disable functions uses the default hw state
which is only read out when we're enabling rps. So essentially we've
been writing random grabage into that register.
Reported-by: Chris Wilson <>
Cc: Chris Wilson <>
Cc: Konstantin Khlebnikov <>
Cc: Jesse Barnes <>
Tested-by: Chris Wilson <>
Reviewed-by: Chris Wilson <>
Signed-off-by: Daniel Vetter <>
(cherry picked from commit 181d1b9e31c668259d3798c521672afb8edd355c)
[dbasehore: fixed conflict from missing line in commit due to 3.10 backport]
Signed-off-by: Derek Basehore <>
Signed-off-by: Darren Hart <>
drivers/gpu/drm/i915/intel_pm.c | 3 ++-
1 file changed, 2 insertions(+), 1 deletion(-)
diff --git a/drivers/gpu/drm/i915/intel_pm.c b/drivers/gpu/drm/i915/intel_pm.c
index aa962ef827c4..f895d1508df8 100644
--- a/drivers/gpu/drm/i915/intel_pm.c
+++ b/drivers/gpu/drm/i915/intel_pm.c
@@ -5489,7 +5489,8 @@ void intel_gt_sanitize(struct drm_device *dev)
/* BIOS often leaves RC6 enabled, but disable it for hw init */
- intel_disable_gt_powersave(dev);
+ if (INTEL_INFO(dev)->gen >= 6)
+ intel_disable_gt_powersave(dev);
void intel_gt_init(struct drm_device *dev)