提交 48b031e3 编写于 作者: M Mika Kuoppala 提交者: Daniel Vetter

drm/i915: Add reset count to error state

By default we keep only the error state from first hang. However
some sneaky user might have cleared the first error state and we
assume mistakenly that it is from first hang. As sometimes this
matters, it is better to explicitly store the reset count.
Signed-off-by: NMika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: NChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 58174462
...@@ -304,6 +304,7 @@ struct drm_i915_error_state { ...@@ -304,6 +304,7 @@ struct drm_i915_error_state {
struct timeval time; struct timeval time;
char error_msg[128]; char error_msg[128];
u32 reset_count;
/* Generic register state */ /* Generic register state */
u32 eir; u32 eir;
......
...@@ -347,6 +347,7 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m, ...@@ -347,6 +347,7 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m,
error->ring[i].pid); error->ring[i].pid);
} }
} }
err_printf(m, "Reset count: %u\n", error->reset_count);
err_printf(m, "PCI ID: 0x%04x\n", dev->pdev->device); err_printf(m, "PCI ID: 0x%04x\n", dev->pdev->device);
err_printf(m, "EIR: 0x%08x\n", error->eir); err_printf(m, "EIR: 0x%08x\n", error->eir);
err_printf(m, "IER: 0x%08x\n", error->ier); err_printf(m, "IER: 0x%08x\n", error->ier);
...@@ -1120,6 +1121,12 @@ static void i915_error_capture_msg(struct drm_device *dev, ...@@ -1120,6 +1121,12 @@ static void i915_error_capture_msg(struct drm_device *dev,
wedged ? "reset" : "continue"); wedged ? "reset" : "continue");
} }
static void i915_capture_gen_state(struct drm_i915_private *dev_priv,
struct drm_i915_error_state *error)
{
error->reset_count = i915_reset_count(&dev_priv->gpu_error);
}
/** /**
* i915_capture_error_state - capture an error record for later analysis * i915_capture_error_state - capture an error record for later analysis
* @dev: drm device * @dev: drm device
...@@ -1146,6 +1153,7 @@ void i915_capture_error_state(struct drm_device *dev, bool wedged, ...@@ -1146,6 +1153,7 @@ void i915_capture_error_state(struct drm_device *dev, bool wedged,
kref_init(&error->ref); kref_init(&error->ref);
i915_capture_gen_state(dev_priv, error);
i915_capture_reg_state(dev_priv, error); i915_capture_reg_state(dev_priv, error);
i915_gem_capture_buffers(dev_priv, error); i915_gem_capture_buffers(dev_priv, error);
i915_gem_record_fences(dev, error); i915_gem_record_fences(dev, error);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册