@@ -304,6 +304,7 @@ struct drm_i915_error_state {
struct timeval time;
char error_msg[128];
+ u32 reset_count;
/* Generic register state */
u32 eir;
@@ -350,6 +350,7 @@ int i915_error_state_to_str(struct drm_i915_error_state_buf *m,
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, "EIR: 0x%08x\n", error->eir);
err_printf(m, "IER: 0x%08x\n", error->ier);
@@ -1123,6 +1124,12 @@ static void i915_error_capture_msg(struct drm_device *dev,
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
* @dev: drm device
@@ -1149,6 +1156,7 @@ void i915_capture_error_state(struct drm_device *dev, bool wedged,
kref_init(&error->ref);
+ i915_capture_gen_state(dev_priv, error);
i915_capture_reg_state(dev_priv, error);
i915_gem_capture_buffers(dev_priv, error);
i915_gem_record_fences(dev, error);