Skip to content

Commit

Permalink
drm/i915: Show bounds of active request in the ring on GPU hang
Browse files Browse the repository at this point in the history
Include the position of the active request in the ring, and display that
alongside the current RING registers (on a GPU hang).

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/20161004201132.21801-6-chris@chris-wilson.co.uk
  • Loading branch information
Chris Wilson committed Oct 5, 2016
1 parent 77c6070 commit cdb324b
Show file tree
Hide file tree
Showing 2 changed files with 10 additions and 2 deletions.
3 changes: 3 additions & 0 deletions drivers/gpu/drm/i915/i915_drv.h
Original file line number Diff line number Diff line change
Expand Up @@ -788,6 +788,9 @@ struct drm_i915_error_state {
struct i915_address_space *vm;
int num_requests;

/* position of active request inside the ring */
u32 rq_head, rq_post, rq_tail;

/* our own tracking of ring head and tail */
u32 cpu_ring_head;
u32 cpu_ring_tail;
Expand Down
9 changes: 7 additions & 2 deletions drivers/gpu/drm/i915/i915_gpu_error.c
Original file line number Diff line number Diff line change
Expand Up @@ -262,8 +262,9 @@ static void error_print_engine(struct drm_i915_error_state_buf *m,
{
err_printf(m, "%s command stream:\n", engine_str(ee->engine_id));
err_printf(m, " START: 0x%08x\n", ee->start);
err_printf(m, " HEAD: 0x%08x\n", ee->head);
err_printf(m, " TAIL: 0x%08x\n", ee->tail);
err_printf(m, " HEAD: 0x%08x\n [0x%08x]", ee->head, ee->rq_head);
err_printf(m, " TAIL: 0x%08x [0x%08x, 0x%08x]\n",
ee->tail, ee->rq_post, ee->rq_tail);
err_printf(m, " CTL: 0x%08x\n", ee->ctl);
err_printf(m, " MODE: 0x%08x\n", ee->mode);
err_printf(m, " HWS: 0x%08x\n", ee->hws);
Expand Down Expand Up @@ -1230,6 +1231,10 @@ static void i915_gem_record_rings(struct drm_i915_private *dev_priv,
error->simulated |=
request->ctx->flags & CONTEXT_NO_ERROR_CAPTURE;

ee->rq_head = request->head;
ee->rq_post = request->postfix;
ee->rq_tail = request->tail;

ring = request->ring;
ee->cpu_ring_head = ring->head;
ee->cpu_ring_tail = ring->tail;
Expand Down

0 comments on commit cdb324b

Please sign in to comment.