From: Oscar Mateo <oscar.mateo@xxxxxxxxx> Since the ringbuffer does not belong per engine anymore, we have to make sure that we are always recording the correct ringbuffer. TODO: This is only a small fix to keep basic error capture working, but we need to add more information for it to be useful (e.g. dump the context being executed). Signed-off-by: Oscar Mateo <oscar.mateo@xxxxxxxxx> --- drivers/gpu/drm/i915/i915_gpu_error.c | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/drivers/gpu/drm/i915/i915_gpu_error.c b/drivers/gpu/drm/i915/i915_gpu_error.c index 6724e32..31ff7e1 100644 --- a/drivers/gpu/drm/i915/i915_gpu_error.c +++ b/drivers/gpu/drm/i915/i915_gpu_error.c @@ -823,9 +823,6 @@ static void i915_record_ring_state(struct drm_device *dev, ering->hws = I915_READ(mmio); } - ering->cpu_ring_head = ring->default_ringbuf.head; - ering->cpu_ring_tail = ring->default_ringbuf.tail; - ering->hangcheck_score = ring->hangcheck.score; ering->hangcheck_action = ring->hangcheck.action; @@ -881,6 +878,7 @@ static void i915_gem_record_rings(struct drm_device *dev, { struct drm_i915_private *dev_priv = dev->dev_private; struct drm_i915_gem_request *request; + struct intel_ringbuffer *ringbuf; int i, count; for (i = 0; i < I915_NUM_RINGS; i++) { @@ -927,8 +925,13 @@ static void i915_gem_record_rings(struct drm_device *dev, } } + ringbuf = intel_ringbuffer_get(ring, + request ? request->ctx : ring->default_context); + error->ring[i].cpu_ring_head = ringbuf->head; + error->ring[i].cpu_ring_tail = ringbuf->tail; + error->ring[i].ringbuffer = - i915_error_ggtt_object_create(dev_priv, ring->default_ringbuf.obj); + i915_error_ggtt_object_create(dev_priv, ringbuf->obj); if (ring->status_page.obj) error->ring[i].hws_page = -- 1.9.0 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx