OSDN Git Service

drm/i915/gt: Kick virtual siblings on timeslice out
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 19 May 2020 13:20:45 +0000 (14:20 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Tue, 19 May 2020 17:52:04 +0000 (18:52 +0100)
commit1ee05f9e6d32a43c029d31958ff91e5ca186ad4d
tree371ac4533be4d083c31b7408fe9b6327a7aff1c4
parent4fe13f28d66ab568bb7303130b79347aa47f7ceb
drm/i915/gt: Kick virtual siblings on timeslice out

If we decide to timeslice out the current virtual request, we will
unsubmit it while it is still busy (ve->context.inflight == sibling[0]).
If the virtual tasklet and then the other sibling tasklets run before we
completely schedule out the active virtual request for the preemption,
those other tasklets will see that the virtul request is still inflight
on sibling[0] and leave it be. Therefore when we finally schedule-out
the virtual request and if we see that we have passed it back to the
virtual engine, reschedule the virtual tasklet so that it may be
resubmitted on any of the siblings.

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/20200519132046.22443-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gt/intel_lrc.c