drm/i915/gt: Cancel the flush worker more thoroughly
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 25 May 2020 14:19:56 +0000 (15:19 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 25 May 2020 15:45:17 +0000 (16:45 +0100)
commit1d93949eb4f870bd189b3e2a435afc327b45dc3a
tree9f6fb3e2b764f64e018fa1788b58c0cbc50aca43
parentafeda4f3b1c88f9e8721b4d4cf48af6f72c6b732
drm/i915/gt: Cancel the flush worker more thoroughly

Since the worker may rearm, we currently are only guaranteed to flush
the work if we cancel the timer. If the work was running at the time we
try and cancel it, we will wait for it to complete, but it may leave
items in the pool and requeue the work. If we rearrange the immediate
discard of the pool then cancel the work, we know that the work cannot
rearm and so our flush will be final.

<0> [314.146044] i915_mod-1321    2.... 299799443us : intel_gt_fini_buffer_pool: intel_gt_fini_buffer_pool:227 GEM_BUG_ON(!list_empty(&pool->cache_list[n]))

Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/1920
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200525141957.3061-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_gt_buffer_pool.c