aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRodrigo Vivi <rodrigo.vivi@intel.com>2014-08-01 12:12:27 -0400
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-08-07 05:07:20 -0400
commit843db716a9c3d3089a3a1f1b9b7af9a33943ab85 (patch)
treed8e39072ffdfab67cf488d51f416e2b5316ab38b
parentdf662a28c2c099a8ea1aa7cb4334d9df8aba6f95 (diff)
drm/i915: Collect gtier properly on HSW.
GTIER and DEIER doesn't have same interface on HSW so this "or" operation makes the information provided useless. v2: since we have gtier variable already let's split for everybody and avoid the strange | op. Also avoid overriding the value that was set for vlv. In this case I believe that we should reorganize the whole function, but I'll respect the comment that ask to not touch the order and let this organization work to be done later. v3: moving VLV check to the right place. Cc: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Reviewed-by: Paulo Zanoni <paulo.r.zanoni@intel.com> Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h1
-rw-r--r--drivers/gpu/drm/i915/i915_gpu_error.c21
2 files changed, 12 insertions, 10 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index ef38c3bc8e4d..ccb97f1f8660 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -314,6 +314,7 @@ struct drm_i915_error_state {
314 u32 eir; 314 u32 eir;
315 u32 pgtbl_er; 315 u32 pgtbl_er;
316 u32 ier; 316 u32 ier;
317 u32 gtier;
317 u32 ccid; 318 u32 ccid;
318 u32 derrmr; 319 u32 derrmr;
319 u32 forcewake; 320 u32 forcewake;
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 0ea6a6b9bb4c..0c945e91d542 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -359,6 +359,8 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m,
359 err_printf(m, "PCI ID: 0x%04x\n", dev->pdev->device); 359 err_printf(m, "PCI ID: 0x%04x\n", dev->pdev->device);
360 err_printf(m, "EIR: 0x%08x\n", error->eir); 360 err_printf(m, "EIR: 0x%08x\n", error->eir);
361 err_printf(m, "IER: 0x%08x\n", error->ier); 361 err_printf(m, "IER: 0x%08x\n", error->ier);
362 if (HAS_PCH_SPLIT(dev) || IS_VALLEYVIEW(dev))
363 err_printf(m, "GTIER: 0x%08x\n", error->gtier);
362 err_printf(m, "PGTBL_ER: 0x%08x\n", error->pgtbl_er); 364 err_printf(m, "PGTBL_ER: 0x%08x\n", error->pgtbl_er);
363 err_printf(m, "FORCEWAKE: 0x%08x\n", error->forcewake); 365 err_printf(m, "FORCEWAKE: 0x%08x\n", error->forcewake);
364 err_printf(m, "DERRMR: 0x%08x\n", error->derrmr); 366 err_printf(m, "DERRMR: 0x%08x\n", error->derrmr);
@@ -1103,7 +1105,8 @@ static void i915_capture_reg_state(struct drm_i915_private *dev_priv,
1103 1105
1104 /* 1: Registers specific to a single generation */ 1106 /* 1: Registers specific to a single generation */
1105 if (IS_VALLEYVIEW(dev)) { 1107 if (IS_VALLEYVIEW(dev)) {
1106 error->ier = I915_READ(GTIER) | I915_READ(VLV_IER); 1108 error->gtier = I915_READ(GTIER);
1109 error->ier = I915_READ(VLV_IER);
1107 error->forcewake = I915_READ(FORCEWAKE_VLV); 1110 error->forcewake = I915_READ(FORCEWAKE_VLV);
1108 } 1111 }
1109 1112
@@ -1136,16 +1139,14 @@ static void i915_capture_reg_state(struct drm_i915_private *dev_priv,
1136 if (HAS_HW_CONTEXTS(dev)) 1139 if (HAS_HW_CONTEXTS(dev))
1137 error->ccid = I915_READ(CCID); 1140 error->ccid = I915_READ(CCID);
1138 1141
1139 if (HAS_PCH_SPLIT(dev)) 1142 if (HAS_PCH_SPLIT(dev)) {
1140 error->ier = I915_READ(DEIER) | I915_READ(GTIER); 1143 error->ier = I915_READ(DEIER);
1141 else { 1144 error->gtier = I915_READ(GTIER);
1142 if (IS_GEN2(dev)) 1145 } else if (IS_GEN2(dev)) {
1143 error->ier = I915_READ16(IER); 1146 error->ier = I915_READ16(IER);
1144 else 1147 } else if (!IS_VALLEYVIEW(dev)) {
1145 error->ier = I915_READ(IER); 1148 error->ier = I915_READ(IER);
1146 } 1149 }
1147
1148 /* 4: Everything else */
1149 error->eir = I915_READ(EIR); 1150 error->eir = I915_READ(EIR);
1150 error->pgtbl_er = I915_READ(PGTBL_ER); 1151 error->pgtbl_er = I915_READ(PGTBL_ER);
1151 1152