提交 94f8cf10 编写于 作者: C Chris Wilson 提交者: Daniel Vetter

drm/i915: Record ring->start address in error state

This is mostly useful for execlists where the rings switch between
contexts (and so checking that the ring's start register matches the
context is important).
Signed-off-by: NChris Wilson <chris@chris-wilson.co.uk>
Signed-off-by: NDaniel Vetter <daniel.vetter@ffwll.ch>
上级 b0da1b79
...@@ -455,6 +455,7 @@ struct drm_i915_error_state { ...@@ -455,6 +455,7 @@ struct drm_i915_error_state {
u32 semaphore_seqno[I915_NUM_RINGS - 1]; u32 semaphore_seqno[I915_NUM_RINGS - 1];
/* Register state */ /* Register state */
u32 start;
u32 tail; u32 tail;
u32 head; u32 head;
u32 ctl; u32 ctl;
......
...@@ -251,10 +251,11 @@ static void i915_ring_error_state(struct drm_i915_error_state_buf *m, ...@@ -251,10 +251,11 @@ static void i915_ring_error_state(struct drm_i915_error_state_buf *m,
return; return;
err_printf(m, "%s command stream:\n", ring_str(ring_idx)); err_printf(m, "%s command stream:\n", ring_str(ring_idx));
err_printf(m, " HEAD: 0x%08x\n", ring->head); err_printf(m, " START: 0x%08x\n", ring->start);
err_printf(m, " TAIL: 0x%08x\n", ring->tail); err_printf(m, " HEAD: 0x%08x\n", ring->head);
err_printf(m, " CTL: 0x%08x\n", ring->ctl); err_printf(m, " TAIL: 0x%08x\n", ring->tail);
err_printf(m, " HWS: 0x%08x\n", ring->hws); err_printf(m, " CTL: 0x%08x\n", ring->ctl);
err_printf(m, " HWS: 0x%08x\n", ring->hws);
err_printf(m, " ACTHD: 0x%08x %08x\n", (u32)(ring->acthd>>32), (u32)ring->acthd); err_printf(m, " ACTHD: 0x%08x %08x\n", (u32)(ring->acthd>>32), (u32)ring->acthd);
err_printf(m, " IPEIR: 0x%08x\n", ring->ipeir); err_printf(m, " IPEIR: 0x%08x\n", ring->ipeir);
err_printf(m, " IPEHR: 0x%08x\n", ring->ipehr); err_printf(m, " IPEHR: 0x%08x\n", ring->ipehr);
...@@ -883,6 +884,7 @@ static void i915_record_ring_state(struct drm_device *dev, ...@@ -883,6 +884,7 @@ static void i915_record_ring_state(struct drm_device *dev,
ering->instpm = I915_READ(RING_INSTPM(ring->mmio_base)); ering->instpm = I915_READ(RING_INSTPM(ring->mmio_base));
ering->seqno = ring->get_seqno(ring, false); ering->seqno = ring->get_seqno(ring, false);
ering->acthd = intel_ring_get_active_head(ring); ering->acthd = intel_ring_get_active_head(ring);
ering->start = I915_READ_START(ring);
ering->head = I915_READ_HEAD(ring); ering->head = I915_READ_HEAD(ring);
ering->tail = I915_READ_TAIL(ring); ering->tail = I915_READ_TAIL(ring);
ering->ctl = I915_READ_CTL(ring); ering->ctl = I915_READ_CTL(ring);
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册