linux-bl808/drivers/gpu/drm/i915/gt
Chris Wilson 5a383d443b drm/i915/gt: Pin the rings before marking active
On eviction, we acquire the vm->mutex and then wait on the vma->active.
Therefore when binding and pinning the vma, we must follow the same
sequence, lock/pin the vma then mark it active. Otherwise, we mark the
vma as active, then wait for the vm->mutex, and meanwhile the evictor
holding the mutex waits upon us to complete our activity.

Fixes: 8ccfc20a7d ("drm/i915/gt: Mark ring->vma as active while pinned")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: <stable@vger.kernel.org> # v5.6+
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200706170138.8993-1-chris@chris-wilson.co.uk
(cherry picked from commit 8567774e87)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2020-07-07 18:00:15 -07:00
..
selftests
shaders
uc
debugfs_engines.c
debugfs_engines.h
debugfs_gt.c
debugfs_gt.h
debugfs_gt_pm.c
debugfs_gt_pm.h
gen6_ppgtt.c
gen6_ppgtt.h
gen6_renderstate.c
gen7_renderclear.c
gen7_renderclear.h
gen7_renderstate.c
gen8_ppgtt.c
gen8_ppgtt.h
gen8_renderstate.c
gen9_renderstate.c
hsw_clear_kernel.c
intel_breadcrumbs.c
intel_context.c
intel_context.h
intel_context_param.c
intel_context_param.h
intel_context_sseu.c
intel_context_types.h
intel_engine.h
intel_engine_cs.c
intel_engine_heartbeat.c
intel_engine_heartbeat.h
intel_engine_pm.c
intel_engine_pm.h
intel_engine_types.h
intel_engine_user.c
intel_engine_user.h
intel_ggtt.c
intel_ggtt_fencing.c
intel_ggtt_fencing.h
intel_gpu_commands.h
intel_gt.c
intel_gt.h
intel_gt_buffer_pool.c
intel_gt_buffer_pool.h
intel_gt_buffer_pool_types.h
intel_gt_clock_utils.c
intel_gt_clock_utils.h
intel_gt_irq.c
intel_gt_irq.h
intel_gt_pm.c
intel_gt_pm.h
intel_gt_pm_irq.c
intel_gt_pm_irq.h
intel_gt_requests.c
intel_gt_requests.h
intel_gt_types.h
intel_gtt.c
intel_gtt.h
intel_llc.c
intel_llc.h
intel_llc_types.h
intel_lrc.c
intel_lrc.h
intel_lrc_reg.h
intel_mocs.c
intel_mocs.h
intel_ppgtt.c
intel_rc6.c
intel_rc6.h
intel_rc6_types.h
intel_renderstate.c
intel_renderstate.h
intel_reset.c
intel_reset.h
intel_reset_types.h
intel_ring.c
intel_ring.h
intel_ring_submission.c
intel_ring_types.h
intel_rps.c
intel_rps.h
intel_rps_types.h
intel_sseu.c
intel_sseu.h
intel_timeline.c
intel_timeline.h
intel_timeline_types.h
intel_workarounds.c
intel_workarounds.h
intel_workarounds_types.h
ivb_clear_kernel.c
mock_engine.c
mock_engine.h
selftest_context.c
selftest_engine.c
selftest_engine.h
selftest_engine_cs.c
selftest_engine_heartbeat.c
selftest_engine_pm.c
selftest_gt_pm.c
selftest_hangcheck.c
selftest_llc.c
selftest_llc.h
selftest_lrc.c
selftest_mocs.c
selftest_rc6.c
selftest_rc6.h
selftest_reset.c
selftest_ring.c
selftest_ring_submission.c
selftest_rps.c
selftest_rps.h
selftest_timeline.c
selftest_workarounds.c
shmem_utils.c
shmem_utils.h
st_shmem_utils.c
sysfs_engines.c
sysfs_engines.h