From 632fc8e940417e42f8a474843c1e77b56759f37b Mon Sep 17 00:00:00 2001 From: Yuanhan Liu Date: Thu, 16 Sep 2010 16:31:31 +0800 Subject: [PATCH][v2] drm/1915: save the right fence registers for Sandybridge Sandybridge uses different address offset(0x100000) for fence table registers, so make sure we have the right fence registers saved before suspend. This would fix bug: https://bugs.freedesktop.org/show_bug.cgi?id=30199 Cc: stable@kernel.org Signed-off-by: Yuanhan Liu --- drivers/gpu/drm/i915/i915_suspend.c | 10 ++++++++-- 1 files changed, 8 insertions(+), 2 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_suspend.c b/drivers/gpu/drm/i915/i915_suspend.c index 2c6b98f..04a4032 100644 --- a/drivers/gpu/drm/i915/i915_suspend.c +++ b/drivers/gpu/drm/i915/i915_suspend.c @@ -789,7 +789,10 @@ int i915_save_state(struct drm_device *dev) dev_priv->saveSWF2[i] = I915_READ(SWF30 + (i << 2)); /* Fences */ - if (IS_I965G(dev)) { + if (IS_GEN6(dev)) { + for (i = 0; i < 16; i++) + dev_priv->saveFENCE[i] = I915_READ64(FENCE_REG_SANDYBRIDGE_0 + (i * 8)); + } else if (IS_I965G(dev)) { for (i = 0; i < 16; i++) dev_priv->saveFENCE[i] = I915_READ64(FENCE_REG_965_0 + (i * 8)); } else { @@ -815,7 +818,10 @@ int i915_restore_state(struct drm_device *dev) I915_WRITE(HWS_PGA, dev_priv->saveHWS); /* Fences */ - if (IS_I965G(dev)) { + if (IS_GEN6(dev)) { + for (i = 0; i < 16; i++) + I915_WRITE64(FENCE_REG_SANDYBRIDGE_0 + (i * 8), dev_priv->saveFENCE[i]); + } else if (IS_I965G(dev)) { for (i = 0; i < 16; i++) I915_WRITE64(FENCE_REG_965_0 + (i * 8), dev_priv->saveFENCE[i]); } else { -- 1.7.2.2