]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915/gt: Free stale request on destroying the virtual engine
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Nov 2020 11:37:17 +0000 (11:37 +0000)
committerChris Wilson <chris@chris-wilson.co.uk>
Mon, 23 Nov 2020 17:26:38 +0000 (17:26 +0000)
commit5a8cd9b5a1ec67b9bfe89c51fdbdb17678274c28
treef05f50cfc8254f11f5aa46b5bafabaf4a8c82afe
parent7880f5449bce040dd0127fa2959d1b7b076c814b
drm/i915/gt: Free stale request on destroying the virtual engine

Since preempt-to-busy, we may unsubmit a request while it is still on
the HW and completes asynchronously. That means it may be retired and in
the process destroy the virtual engine (as the user has closed their
context), but that engine may still be holding onto the unsubmitted
compelted request. Therefore we need to potentially cleanup the old
request on destroying the virtual engine. We also have to keep the
virtual_engine alive until after the sibling's execlists_dequeue() have
finished peeking into the virtual engines, for which we serialise with
RCU.

v2: Be paranoid and flush the tasklet as well.
v3: And flush the tasklet before the engines, as the tasklet may
re-attach an rb_node after our removal from the siblings.

Fixes: 2f2ab31764ee ("drm/i915: Load balancing across a virtual engine")
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/20201123113717.20500-4-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c