drm/i915: Only enqueue already completed requests
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Sep 2019 11:00:55 +0000 (12:00 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Sep 2019 15:21:37 +0000 (16:21 +0100)
commitc0bb487dc19fc45dbeede7dcf8f513df51a3cd33
tree9f23871f9b660fa60565c7aa1d1089dc9a5e8d85
parent3231f8c01121ee1febfd82398ee22f7ff9dc5d76
drm/i915: Only enqueue already completed requests

If we are asked to submit a completed request, just move it onto the
active-list without modifying it's payload. If we try to emit the
modified payload of a completed request, we risk racing with the
ring->head update during retirement which may advance the head past our
breadcrumb and so we generate a warning for the emission being behind
the RING_HEAD.

v2: Commentary for the sneaky, shared responsibility between functions.
v3: Spelling mistakes and bonus assertion

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190923110056.15176-3-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c
drivers/gpu/drm/i915/i915_request.c
drivers/gpu/drm/i915/i915_request.h