summaryrefslogtreecommitdiff
path: root/drivers/gpu/drm/i915/i915_debugfs.c
diff options
context:
space:
mode:
authorMika Kuoppala <mika.kuoppala@linux.intel.com>2013-06-06 15:18:39 +0300
committerDaniel Vetter <daniel.vetter@ffwll.ch>2013-07-01 19:38:19 +0200
commitfc16b48be665d94337a861486dd25499971742a2 (patch)
tree4fa86504571c4ddc1c96d3fa045147328ee0d145 /drivers/gpu/drm/i915/i915_debugfs.c
parent319d9827ebb55d58d1b02d8a4eba48bbb2702376 (diff)
drm/i915: export error state to string conversion
In preparation for accessing error state from sysfs, export error state to string conversion function. Also tuck buffer error handling inside the function. 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>
Diffstat (limited to 'drivers/gpu/drm/i915/i915_debugfs.c')
-rw-r--r--drivers/gpu/drm/i915/i915_debugfs.c24
1 files changed, 8 insertions, 16 deletions
diff --git a/drivers/gpu/drm/i915/i915_debugfs.c b/drivers/gpu/drm/i915/i915_debugfs.c
index f82134f8e9fb..b64af15eb388 100644
--- a/drivers/gpu/drm/i915/i915_debugfs.c
+++ b/drivers/gpu/drm/i915/i915_debugfs.c
@@ -830,15 +830,8 @@ static void i915_ring_error_state(struct drm_i915_error_state_buf *m,
err_printf(m, " ring->tail: 0x%08x\n", error->cpu_ring_tail[ring]);
}
-struct i915_error_state_file_priv {
- struct drm_device *dev;
- struct drm_i915_error_state *error;
-};
-
-
-static int i915_error_state(struct i915_error_state_file_priv *error_priv,
- struct drm_i915_error_state_buf *m)
-
+int i915_error_state_to_str(struct drm_i915_error_state_buf *m,
+ const struct i915_error_state_file_priv *error_priv)
{
struct drm_device *dev = error_priv->dev;
drm_i915_private_t *dev_priv = dev->dev_private;
@@ -848,7 +841,7 @@ static int i915_error_state(struct i915_error_state_file_priv *error_priv,
if (!error) {
err_printf(m, "no error state collected\n");
- return 0;
+ goto out;
}
err_printf(m, "Time: %ld s %ld us\n", error->time.tv_sec,
@@ -958,6 +951,10 @@ static int i915_error_state(struct i915_error_state_file_priv *error_priv,
if (error->display)
intel_display_print_error_state(m, dev, error->display);
+out:
+ if (m->bytes == 0 && m->err)
+ return m->err;
+
return 0;
}
@@ -1051,15 +1048,10 @@ static ssize_t i915_error_state_read(struct file *file, char __user *userbuf,
error_str.start = *pos;
- ret = i915_error_state(error_priv, &error_str);
+ ret = i915_error_state_to_str(&error_str, error_priv);
if (ret)
goto out;
- if (error_str.bytes == 0 && error_str.err) {
- ret = error_str.err;
- goto out;
- }
-
ret_count = simple_read_from_buffer(userbuf, count, &tmp_pos,
error_str.buf,
error_str.bytes);