aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorMika Kuoppala <mika.kuoppala@linux.intel.com>2014-02-25 10:11:28 -0500
committerDaniel Vetter <daniel.vetter@ffwll.ch>2014-03-05 15:30:27 -0500
commit62d5d69b49b6fea9905e36e67cc6c4fc5a17d75f (patch)
treeca6b7be8a194806ff3049e24a649968a033cb38b
parent48b031e30d46b11fdf7a8075f02f5f9eef728f4d (diff)
drm/i915: Add suspend count to error state
For example if we get bug reports with similar error states and suspend count is always 1, that might lead the Sherlocks to right general direction. Suggested-by: Ville Syrjälä <ville.syrjala@linux.intel.com> Signed-off-by: Mika Kuoppala <mika.kuoppala@intel.com> 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.c2
-rw-r--r--drivers/gpu/drm/i915/i915_drv.h3
-rw-r--r--drivers/gpu/drm/i915/i915_gpu_error.c2
3 files changed, 7 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/i915_drv.c b/drivers/gpu/drm/i915/i915_drv.c
index 70a4c9bb7b80..a50292c0423f 100644
--- a/drivers/gpu/drm/i915/i915_drv.c
+++ b/drivers/gpu/drm/i915/i915_drv.c
@@ -479,6 +479,8 @@ static int i915_drm_freeze(struct drm_device *dev)
479 intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED); 479 intel_fbdev_set_suspend(dev, FBINFO_STATE_SUSPENDED);
480 console_unlock(); 480 console_unlock();
481 481
482 dev_priv->suspend_count++;
483
482 return 0; 484 return 0;
483} 485}
484 486
diff --git a/drivers/gpu/drm/i915/i915_drv.h b/drivers/gpu/drm/i915/i915_drv.h
index a6429cc93d1a..e33f6a763960 100644
--- a/drivers/gpu/drm/i915/i915_drv.h
+++ b/drivers/gpu/drm/i915/i915_drv.h
@@ -305,6 +305,7 @@ struct drm_i915_error_state {
305 305
306 char error_msg[128]; 306 char error_msg[128];
307 u32 reset_count; 307 u32 reset_count;
308 u32 suspend_count;
308 309
309 /* Generic register state */ 310 /* Generic register state */
310 u32 eir; 311 u32 eir;
@@ -1606,6 +1607,8 @@ typedef struct drm_i915_private {
1606 struct i915_dri1_state dri1; 1607 struct i915_dri1_state dri1;
1607 /* Old ums support infrastructure, same warning applies. */ 1608 /* Old ums support infrastructure, same warning applies. */
1608 struct i915_ums_state ums; 1609 struct i915_ums_state ums;
1610
1611 u32 suspend_count;
1609} drm_i915_private_t; 1612} drm_i915_private_t;
1610 1613
1611static inline struct drm_i915_private *to_i915(const struct drm_device *dev) 1614static inline struct drm_i915_private *to_i915(const struct drm_device *dev)
diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c
index 353f0770da8f..ce2dd608968c 100644
--- a/drivers/gpu/drm/i915/i915_gpu_error.c
+++ b/drivers/gpu/drm/i915/i915_gpu_error.c
@@ -348,6 +348,7 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m,
348 } 348 }
349 } 349 }
350 err_printf(m, "Reset count: %u\n", error->reset_count); 350 err_printf(m, "Reset count: %u\n", error->reset_count);
351 err_printf(m, "Suspend count: %u\n", error->suspend_count);
351 err_printf(m, "PCI ID: 0x%04x\n", dev->pdev->device); 352 err_printf(m, "PCI ID: 0x%04x\n", dev->pdev->device);
352 err_printf(m, "EIR: 0x%08x\n", error->eir); 353 err_printf(m, "EIR: 0x%08x\n", error->eir);
353 err_printf(m, "IER: 0x%08x\n", error->ier); 354 err_printf(m, "IER: 0x%08x\n", error->ier);
@@ -1125,6 +1126,7 @@ static void i915_capture_gen_state(struct drm_i915_private *dev_priv,
1125 struct drm_i915_error_state *error) 1126 struct drm_i915_error_state *error)
1126{ 1127{
1127 error->reset_count = i915_reset_count(&dev_priv->gpu_error); 1128 error->reset_count = i915_reset_count(&dev_priv->gpu_error);
1129 error->suspend_count = dev_priv->suspend_count;
1128} 1130}
1129 1131
1130/** 1132/**