diff options
author | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2014-08-01 12:12:27 -0400 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-08-07 05:07:20 -0400 |
commit | 843db716a9c3d3089a3a1f1b9b7af9a33943ab85 (patch) | |
tree | d8e39072ffdfab67cf488d51f416e2b5316ab38b | |
parent | df662a28c2c099a8ea1aa7cb4334d9df8aba6f95 (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.h | 1 | ||||
-rw-r--r-- | drivers/gpu/drm/i915/i915_gpu_error.c | 21 |
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 | ||