Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit 14fd0d6d authored by Chris Wilson's avatar Chris Wilson
Browse files

drm/i915: Include engine->last_submitted_seqno in GPU error state



It's useful to look at the last seqno submitted on a particular engine
and compare it against the HWS value to check for irregularities.

Signed-off-by: default avatarChris Wilson <chris@chris-wilson.co.uk>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Reviewed-by: default avatarMika Kuoppala <mika.kuoppala@linux.intel.com>
Reviewed-by: default avatarJoonas Lahtinen <joonas.lahtinen@linux.intel.com>
Link: http://patchwork.freedesktop.org/patch/msgid/1460010558-10705-1-git-send-email-chris@chris-wilson.co.uk
parent 6f0e7535
Loading
Loading
Loading
Loading
+4 −2
Original line number Diff line number Diff line
@@ -1363,8 +1363,10 @@ static int i915_hangcheck_info(struct seq_file *m, void *unused)

	for_each_engine_id(engine, dev_priv, id) {
		seq_printf(m, "%s:\n", engine->name);
		seq_printf(m, "\tseqno = %x [current %x]\n",
			   engine->hangcheck.seqno, seqno[id]);
		seq_printf(m, "\tseqno = %x [current %x, last %x]\n",
			   engine->hangcheck.seqno,
			   seqno[id],
			   engine->last_submitted_seqno);
		seq_printf(m, "\tACTHD = 0x%08llx [current 0x%08llx]\n",
			   (long long)engine->hangcheck.acthd,
			   (long long)acthd[id]);
+1 −0
Original line number Diff line number Diff line
@@ -495,6 +495,7 @@ struct drm_i915_error_state {
		u32 cpu_ring_head;
		u32 cpu_ring_tail;

		u32 last_seqno;
		u32 semaphore_seqno[I915_NUM_ENGINES - 1];

		/* Register state */
+2 −0
Original line number Diff line number Diff line
@@ -296,6 +296,7 @@ static void i915_ring_error_state(struct drm_i915_error_state_buf *m,
		}
	}
	err_printf(m, "  seqno: 0x%08x\n", ring->seqno);
	err_printf(m, "  last_seqno: 0x%08x\n", ring->last_seqno);
	err_printf(m, "  waiting: %s\n", yesno(ring->waiting));
	err_printf(m, "  ring->head: 0x%08x\n", ring->cpu_ring_head);
	err_printf(m, "  ring->tail: 0x%08x\n", ring->cpu_ring_tail);
@@ -932,6 +933,7 @@ static void i915_record_ring_state(struct drm_device *dev,
	ering->instpm = I915_READ(RING_INSTPM(engine->mmio_base));
	ering->seqno = engine->get_seqno(engine, false);
	ering->acthd = intel_ring_get_active_head(engine);
	ering->last_seqno = engine->last_submitted_seqno;
	ering->start = I915_READ_START(engine);
	ering->head = I915_READ_HEAD(engine);
	ering->tail = I915_READ_TAIL(engine);