drm/i915/gt: Flush other retirees inside intel_gt_retire_requests()
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Dec 2019 21:10:08 +0000 (21:10 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 24 Dec 2019 09:51:32 +0000 (09:51 +0000)
commit30084b143de7a320ab8fc609a8ad3a396232d002
treeea81708354097514b0b96f3d504aaa7ad7dcb1ff
parentb42d3b159ad8073602e466244f49f29f327e6798
drm/i915/gt: Flush other retirees inside intel_gt_retire_requests()

Our goal in wait_for_idle (intel_gt_retire_requests) is to the current
workload *and* their idle barriers. This requires us to notice the late
arrival of those, which is done by inspecting the list of active
timelines. However, if a concurrent retirer is running that new timeline
may not be added until after we drop the lock -- so flush concurrent
retirers before we take the lock and inspect the list.

Closes: https://gitlab.freedesktop.org/drm/intel/issues/878
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Acked-by: Andi Shyti <andi.shyti@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20191223211008.2371613-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_engine.h
drivers/gpu/drm/i915/gt/intel_engine_cs.c
drivers/gpu/drm/i915/gt/intel_gt_requests.c