drm/i915: Save/restore HWS_PGA on suspend/resume

It fixes suspend/resume failure of xf86-video-intel dri2
branch. As dri2 branch doesn't call I830DRIResume() to restore
hardware status page anymore, we need to preserve
this register across suspend/resume.

Signed-off-by: Peng Li <peng.li@intel.com>
Signed-off-by: Eric Anholt <eric@anholt.net>
Signed-off-by: Dave Airlie <airlied@redhat.com>

authored by Peng Li and committed by Dave Airlie 461cba2d 52440211

+7
+1
drivers/gpu/drm/i915/i915_drv.h
··· 150 150 u32 saveDSPBCNTR; 151 151 u32 saveDSPARB; 152 152 u32 saveRENDERSTANDBY; 153 + u32 saveHWS; 153 154 u32 savePIPEACONF; 154 155 u32 savePIPEBCONF; 155 156 u32 savePIPEASRC;
+6
drivers/gpu/drm/i915/i915_suspend.c
··· 244 244 if (IS_I965G(dev) && IS_MOBILE(dev)) 245 245 dev_priv->saveRENDERSTANDBY = I915_READ(MCHBAR_RENDER_STANDBY); 246 246 247 + /* Hardware status page */ 248 + dev_priv->saveHWS = I915_READ(HWS_PGA); 249 + 247 250 /* Display arbitration control */ 248 251 dev_priv->saveDSPARB = I915_READ(DSPARB); 249 252 ··· 375 372 /* Render Standby */ 376 373 if (IS_I965G(dev) && IS_MOBILE(dev)) 377 374 I915_WRITE(MCHBAR_RENDER_STANDBY, dev_priv->saveRENDERSTANDBY); 375 + 376 + /* Hardware status page */ 377 + I915_WRITE(HWS_PGA, dev_priv->saveHWS); 378 378 379 379 /* Display arbitration */ 380 380 I915_WRITE(DSPARB, dev_priv->saveDSPARB);