linux/drivers/gpu/drm/i915/gem
Chris Wilson 736e785f9b drm/i915/gem: Reduce context termination list iteration guard to RCU
As we now protect the timeline list using RCU, we can drop the
timeline->mutex for guarding the list iteration during context close, as
we are searching for an inflight request. Any new request will see the
context is banned and not be submitted. In doing so, pull the checks for
a concurrent submission of the request (notably the
i915_request_completed()) under the engine spinlock, to fully serialise
with __i915_request_submit()). That is in the case of preempt-to-busy
where the request may be completed during the __i915_request_submit(),
we need to be careful that we sample the request status after
serialising so that we don't miss the request the engine is actually
submitting.

Fixes: 4a31741521 ("drm/i915/gem: Refine occupancy test in kill_context()")
References: d22d2d073e ("drm/i915: Protect i915_request_await_start from early waits") # rcu protection of timeline->requests
References: https://gitlab.freedesktop.org/drm/intel/-/issues/1622
References: https://gitlab.freedesktop.org/drm/intel/-/issues/2158
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/20200806105954.7766-1-chris@chris-wilson.co.uk
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2020-09-07 14:28:14 +03:00
..
selftests drm/i915/gt: Switch to object allocations for page directories 2020-09-07 14:24:08 +03:00
i915_gem_busy.c
i915_gem_clflush.c drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
i915_gem_clflush.h
i915_gem_client_blt.c drm/i915: Preallocate stashes for vma page-directories 2020-09-07 14:24:05 +03:00
i915_gem_client_blt.h
i915_gem_context.c drm/i915/gem: Reduce context termination list iteration guard to RCU 2020-09-07 14:28:14 +03:00
i915_gem_context.h drm/i915/sseu: Move sseu_info under gt_info 2020-07-08 21:13:09 +01:00
i915_gem_context_types.h drm/i915/gem: Split the context's obj:vma lut into its own mutex 2020-07-03 10:13:13 +01:00
i915_gem_dmabuf.c drm/i915/gem: Give each object class a friendly name 2020-05-29 23:38:29 +01:00
i915_gem_domain.c drm/i915/gem: Remove object_is_locked assertion from unpin_from_display_plane 2020-05-06 15:37:31 -07:00
i915_gem_execbuffer.c drm/i915: Export a preallocate variant of i915_active_acquire() 2020-09-07 13:18:17 +03:00
i915_gem_fence.c drm/i915: Replace the hardcoded I915_FENCE_TIMEOUT 2020-05-09 12:57:57 +01:00
i915_gem_internal.c drm/i915/gem: Give each object class a friendly name 2020-05-29 23:38:29 +01:00
i915_gem_ioctls.h
i915_gem_lmem.c drm/i915/gem: Give each object class a friendly name 2020-05-29 23:38:29 +01:00
i915_gem_lmem.h
i915_gem_mman.c drm/i915/gem: Only revoke mmap handlers if active 2020-07-02 20:46:08 +01:00
i915_gem_mman.h drm/i915/gem: Only revoke mmap handlers if active 2020-07-02 20:46:08 +01:00
i915_gem_object.c drm/i915/gem: Split the context's obj:vma lut into its own mutex 2020-07-03 10:13:13 +01:00
i915_gem_object.h drm/i915: Remove i915_gem_object_get_dirty_page() 2020-07-08 22:05:51 +01:00
i915_gem_object_blt.c drm/i915: Remove redundant i915_request_await_object in blit clears 2020-06-16 21:53:56 +01:00
i915_gem_object_blt.h drm/i915/gt: Move the batch buffer pool from the engine to the gt 2020-04-30 19:12:02 +01:00
i915_gem_object_types.h drm/i915/gt: Switch to object allocations for page directories 2020-09-07 14:24:08 +03:00
i915_gem_pages.c drm/i915: Remove i915_gem_object_get_dirty_page() 2020-07-08 22:05:51 +01:00
i915_gem_phys.c Merge drm/drm-next into drm-intel-next-queued 2020-06-25 18:05:03 +03:00
i915_gem_pm.c
i915_gem_pm.h
i915_gem_region.c
i915_gem_region.h
i915_gem_shmem.c drm/i915/gem: Give each object class a friendly name 2020-05-29 23:38:29 +01:00
i915_gem_shrinker.c drm/i915/gem: Unpin idle contexts from kswapd reclaim 2020-07-08 22:05:49 +01:00
i915_gem_shrinker.h
i915_gem_stolen.c drm/i915/gem: Give each object class a friendly name 2020-05-29 23:38:29 +01:00
i915_gem_stolen.h
i915_gem_throttle.c drm/i915/gem: Remove disordered per-file request list for throttling 2020-09-07 13:13:50 +03:00
i915_gem_tiling.c drm/i915/gem: Only revoke the GGTT mmappings on aperture detiling changes 2020-07-02 20:46:08 +01:00
i915_gem_userptr.c mm/gup: remove task_struct pointer for all gup code 2020-08-12 10:58:04 -07:00
i915_gem_wait.c
i915_gemfs.c
i915_gemfs.h