drm/i915/gt: Decouple completed requests on unwind
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 26 Nov 2020 14:04:03 +0000 (14:04 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Thu, 26 Nov 2020 18:26:01 +0000 (18:26 +0000)
commitb8e2bd98a2c9c3a90856c1909aab30d25d379c31
tree6da440b3d90eea5700ec7a917d96f0302e5824ce
parent977933b5da7c16f39295c4c1d4259a58ece65dbe
drm/i915/gt: Decouple completed requests on unwind

Since the introduction of preempt-to-busy, requests can complete in the
background, even while they are not on the engine->active.requests list.
As such, the engine->active.request list itself is not in strict
retirement order, and we have to scan the entire list while unwinding to
not miss any. However, if the request is completed we currently leave it
on the list [until retirement], but we could just as simply remove it
and stop treating it as active. We would only have to then traverse it
once while unwinding in quick succession.

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