]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Avoid lock dropping between rescheduling
authorChris Wilson <chris@chris-wilson.co.uk>
Mon, 27 Mar 2017 20:21:43 +0000 (21:21 +0100)
committerJani Nikula <jani.nikula@intel.com>
Fri, 31 Mar 2017 10:39:47 +0000 (13:39 +0300)
commit641425ce20b1281370e9464fd5388aa43b968988
tree63af6bf314b71588fc6d52fd4a4adbf2482cb078
parent4231b5a51f323a9266c12eb9390f1024eae70ae4
drm/i915: Avoid lock dropping between rescheduling

Unlocking is dangerous. In this case we combine an early update to the
out-of-queue request, because we know that it will be inserted into the
correct FIFO priority-ordered slot when it becomes ready in the future.
However, given sufficient enthusiasm, it may become ready as we are
continuing to reschedule, and so may gazump the FIFO if we have since
dropped its spinlock. The result is that it may be executed too early,
before its dependencies.

v2: Move all work into the second phase over the topological sort. This
removes the shortcut on the out-of-rbtree request to ensure that we only
adjust its priority after adjusting all of its dependencies.

Fixes: bb905ef43cb0 ("drm/i915/scheduler: Execute requests in order of priorities")
Testcase: igt/gem_exec_whisper
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: <stable@vger.kernel.org> # v4.10+
Link: http://patchwork.freedesktop.org/patch/msgid/20170327202143.7972-1-chris@chris-wilson.co.uk
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
(cherry picked from commit a79a524e9260d4ffaff88348615e70fb3d393692)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
drivers/gpu/drm/i915/intel_lrc.c