On my Ironlake, I was consistently hitting this. I'm not yet sure what
the best fix is, but this is better than what is there currently.

Jesse can probably do something better... perhaps even a delay before calling
ironlake_disable_rc6() again would suffice.

Signed-off-by: Ben Widawsky <[email protected]>
---
 drivers/gpu/drm/i915/intel_display.c |    7 +++++--
 1 files changed, 5 insertions(+), 2 deletions(-)

diff --git a/drivers/gpu/drm/i915/intel_display.c 
b/drivers/gpu/drm/i915/intel_display.c
index 94622e3..32ac4f1 100644
--- a/drivers/gpu/drm/i915/intel_display.c
+++ b/drivers/gpu/drm/i915/intel_display.c
@@ -6483,6 +6483,7 @@ static void ironlake_teardown_rc6(struct drm_device *dev)
 static void ironlake_disable_rc6(struct drm_device *dev)
 {
        struct drm_i915_private *dev_priv = dev->dev_private;
+       static int max_tries = 100;
 
        if (I915_READ(PWRCTXA)) {
                /* Wake the GPU, prevent RC6, then restore RSTDBYCTL */
@@ -6496,8 +6497,10 @@ static void ironlake_disable_rc6(struct drm_device *dev)
                I915_WRITE(RSTDBYCTL, I915_READ(RSTDBYCTL) & ~RCX_SW_EXIT);
                POSTING_READ(RSTDBYCTL);
        }
-
-       ironlake_disable_rc6(dev);
+       if (max_tries--)
+               ironlake_disable_rc6(dev);
+       else
+               DRM_DEBUG_DRIVER("Failed to disable RC6\n");
 }
 
 static int ironlake_setup_rc6(struct drm_device *dev)
-- 
1.7.3.4

_______________________________________________
Intel-gfx mailing list
[email protected]
http://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to