]> 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)
commit073862446e6088fccc9ad2547c7923765d63b946
treef05f50cfc8254f11f5aa46b5bafabaf4a8c82afe
parent4f2c1e2300a58f1a29d4b5eeb3c09d1c9cf9b4bd
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: 077413c22dbb ("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