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)
committerRodrigo Vivi <rodrigo.vivi@intel.com>
Wed, 9 Oct 2019 20:18:26 +0000 (13:18 -0700)
commita8385f0c3fd3f31ab53726e26229b428d18a51bf
treee4e9c09158a0dad11010767dfeb8abe2d18c21e5
parent6535a4b34ed9e566eca4008a26dae94699f3afce
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
(cherry picked from commit c0bb487dc19fc45dbeede7dcf8f513df51a3cd33)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
drivers/gpu/drm/i915/gt/intel_lrc.c
drivers/gpu/drm/i915/i915_request.c
drivers/gpu/drm/i915/i915_request.h