diff options
author | Ben Widawsky <benjamin.widawsky@intel.com> | 2014-01-30 03:19:39 -0500 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-01-30 07:00:24 -0500 |
commit | 91ec5d11ab6fea7eafd0364b77cd39baf60cd8e3 (patch) | |
tree | f032caf49853e1b016214125ac9ffc9b8ea4e5e9 | |
parent | 362b8af7ad1d91266aa4931e62be45c1e5cf753b (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.h | 4 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gpu_error.c | 11 |
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 | ||