aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorBen Widawsky <benjamin.widawsky@intel.com>2014-01-30 03:19:39 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-01-30 07:00:24 -0500
commit91ec5d11ab6fea7eafd0364b77cd39baf60cd8e3 (patch)
treef032caf49853e1b016214125ac9ffc9b8ea4e5e9
parent362b8af7ad1d91266aa4931e62be45c1e5cf753b (diff)
drm/i915: Add some more registers to error state
Chris: Do we also want to capture? GAC_ECO_BITS /* gen6,7 */ GAM_ECOCHK /* gen6,7 */ GAB_CTL /* gen6 */ GFX_MODE /* gen6 */ Requested-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Ben Widawsky <ben@bwidawsk.net> Reviewed-by: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h4
-rw-r--r--drivers/gpu/drm/i915/i915_gpu_error.c11
2 files changed, 14 insertions, 1 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index 50229988a9d9..34ff995e6ea3 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -307,6 +307,10 @@ struct drm_i915_error_state {
307 u32 error; /* gen6+ */ 307 u32 error; /* gen6+ */
308 u32 err_int; /* gen7 */ 308 u32 err_int; /* gen7 */
309 u32 done_reg; 309 u32 done_reg;
310 u32 gac_eco;
311 u32 gam_ecochk;
312 u32 gab_ctl;
313 u32 gfx_mode;
310 u32 extra_instdone[I915_NUM_INSTDONE_REG]; 314 u32 extra_instdone[I915_NUM_INSTDONE_REG];
311 u32 pipestat[I915_MAX_PIPES]; 315 u32 pipestat[I915_MAX_PIPES];
312 u64 fence[I915_MAX_NUM_FENCES]; 316 u64 fence[I915_MAX_NUM_FENCES];
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 58ef6d80b569..70a7cd77afb2 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -1001,8 +1001,11 @@ static void i915_capture_reg_state(struct drm_i915_private *dev_priv,
1001 if (IS_GEN7(dev)) 1001 if (IS_GEN7(dev))
1002 error->err_int = I915_READ(GEN7_ERR_INT); 1002 error->err_int = I915_READ(GEN7_ERR_INT);
1003 1003
1004 if (IS_GEN6(dev)) 1004 if (IS_GEN6(dev)) {
1005 error->forcewake = I915_READ(FORCEWAKE); 1005 error->forcewake = I915_READ(FORCEWAKE);
1006 error->gab_ctl = I915_READ(GAB_CTL);
1007 error->gfx_mode = I915_READ(GFX_MODE);
1008 }
1006 1009
1007 if (IS_GEN2(dev)) 1010 if (IS_GEN2(dev))
1008 error->ier = I915_READ16(IER); 1011 error->ier = I915_READ16(IER);
@@ -1018,6 +1021,12 @@ static void i915_capture_reg_state(struct drm_i915_private *dev_priv,
1018 } 1021 }
1019 1022
1020 /* 3: Feature specific registers */ 1023 /* 3: Feature specific registers */
1024 if (IS_GEN6(dev) || IS_GEN7(dev)) {
1025 error->gam_ecochk = I915_READ(GAM_ECOCHK);
1026 error->gac_eco = I915_READ(GAC_ECO_BITS);
1027 }
1028
1029 /* 4: Everything else */
1021 if (HAS_HW_CONTEXTS(dev)) 1030 if (HAS_HW_CONTEXTS(dev))
1022 error->ccid = I915_READ(CCID); 1031 error->ccid = I915_READ(CCID);
1023 1032