aboutsummaryrefslogtreecommitdiffstats
path: root/drivers/gpu/drm/i915/intel_ringbuffer.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2018-03-07 08:42:23 -0500
committerChris Wilson <chris@chris-wilson.co.uk>2018-03-09 09:13:31 -0500
commit36620032ceccb4bf07bbe780a3998e88a585ad69 (patch)
tree12c94ac1425ef05ab6c406f5df8be9c94f0159e1 /drivers/gpu/drm/i915/intel_ringbuffer.c
parent2d4ecace3a7861c6071235a6cc88067b8c3eec4a (diff)
drm/i915: Update ring position from request on retiring
When wedged, we do not update the ring->tail as we submit the requests causing us to leak the ring->space upon cleaning up the wedged driver. We can just use the value stored in rq->tail, and keep the submission backend details away from set-wedge. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com> Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com> Link: https://patchwork.freedesktop.org/patch/msgid/20180307134226.25492-3-chris@chris-wilson.co.uk
Diffstat (limited to 'drivers/gpu/drm/i915/intel_ringbuffer.c')
-rw-r--r--drivers/gpu/drm/i915/intel_ringbuffer.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 1d599524a759..88eeb64041ae 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -1593,6 +1593,7 @@ static noinline int wait_for_space(struct intel_ring *ring, unsigned int bytes)
1593 if (intel_ring_update_space(ring) >= bytes) 1593 if (intel_ring_update_space(ring) >= bytes)
1594 return 0; 1594 return 0;
1595 1595
1596 GEM_BUG_ON(list_empty(&ring->request_list));
1596 list_for_each_entry(target, &ring->request_list, ring_link) { 1597 list_for_each_entry(target, &ring->request_list, ring_link) {
1597 /* Would completion of this request free enough space? */ 1598 /* Would completion of this request free enough space? */
1598 if (bytes <= __intel_ring_space(target->postfix, 1599 if (bytes <= __intel_ring_space(target->postfix,