]> git.baikalelectronics.ru Git - kernel.git/commit
drm/i915: Capture vma contents outside of spinlock
authorChris Wilson <chris@chris-wilson.co.uk>
Thu, 25 Jul 2019 22:38:43 +0000 (23:38 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Fri, 26 Jul 2019 00:11:25 +0000 (01:11 +0100)
commitbce9af334b5464b7de7a5f920d47e9082d9baa00
tree3c6db6c855987070e2d8b9b76eb3b9c624136a3f
parent23221bb5a3b11710c163c39913abc1237f7354cf
drm/i915: Capture vma contents outside of spinlock

Currently we use the engine->active.lock to ensure that the request is
not retired as we capture the data. However, we only need to ensure that
the vma are not removed prior to use acquiring their contents, and
since we have already relinquished our stop-machine protection, we
assume that the user will not be overwriting the contents before we are
able to record them.

In order to capture the vma outside of the spinlock, we acquire a
reference and mark the vma as active to prevent it from being unbound.
However, since it is tricky allocate an entry in the fence tree (doing
so would require taking a mutex) while inside the engine spinlock, we
use an atomic bit and special case the handling for i915_active_wait.

The core benefit is that we can use some non-atomic methods for mapping
the device pages, we can remove the slow compression phase out of atomic
context (i.e. stop antagonising the nmi-watchdog), and no we longer need
large reserves of atomic pages.

Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=111215
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.william.auld@gmail.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190725223843.8971-1-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/i915_active.c
drivers/gpu/drm/i915/i915_active.h
drivers/gpu/drm/i915/i915_active_types.h
drivers/gpu/drm/i915/i915_gpu_error.c