linux/drivers/gpu/drm/i915/gt
Chris Wilson 8ea6bb8e4d drm/i915/gt: Close race between cacheline_retire and free
If the cacheline may still be busy, atomically mark it for future
release, and only if we can determine that it will never be used again,
immediately free it.

Closes: https://gitlab.freedesktop.org/drm/intel/issues/1392
Fixes: ebece75392 ("drm/i915: Keep timeline HWSP allocated until idle across the system")
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Cc: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: Matthew Auld <matthew.auld@intel.com>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Cc: <stable@vger.kernel.org> # v5.2+
Link: https://patchwork.freedesktop.org/patch/msgid/20200306154647.3528345-1-chris@chris-wilson.co.uk
(cherry picked from commit 2d4bd971f5)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2020-03-11 23:12:39 +02:00
..
selftests drm/i915: Serialise i915_active_fence_set() with itself 2019-11-27 17:02:14 +00:00
uc drm/i915/uc: Add sanitize to to intel_uc_ops 2020-01-11 08:34:29 +00:00
debugfs_engines.c drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_engines.h drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_gt_pm.c drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_gt_pm.h drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_gt.c drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
debugfs_gt.h drm/i915/gt: Move pm debug files into a gt aware debugfs 2019-12-22 15:25:10 +00:00
gen6_ppgtt.c drm pull for 5.6-rc1 2020-01-30 08:04:01 -08:00
gen6_ppgtt.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
gen6_renderstate.c
gen7_renderstate.c
gen8_ppgtt.c drm pull for 5.6-rc1 2020-01-30 08:04:01 -08:00
gen8_ppgtt.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
gen8_renderstate.c
gen9_renderstate.c
intel_breadcrumbs.c drm/i915/gt: Prevent queuing retire workers on the virtual engine 2020-02-17 21:24:13 +02:00
intel_context_types.h drm/i915/gt: Always poison the kernel_context image before unparking 2020-01-03 11:26:01 +00:00
intel_context.c drm/i915/gt: Acquire ce->active before ce->pin_count/ce->pin_mutex 2020-02-12 13:24:45 +02:00
intel_context.h drm/i915/gt: Pull context activation into central intel_context_pin() 2020-01-09 13:48:00 +00:00
intel_engine_cs.c drm/i915/gt: Allow temporary suspension of inflight requests 2020-02-12 16:55:58 +02:00
intel_engine_heartbeat.c drm/i915: Merge i915_request.flags with i915_request.fence.flags 2020-01-06 14:38:55 +00:00
intel_engine_heartbeat.h drm/i915/gt: Replace hangcheck by heartbeats 2019-10-23 23:52:10 +01:00
intel_engine_pm.c drm/i915/gt: Always poison the kernel_context image before unparking 2020-01-03 11:26:01 +00:00
intel_engine_pm.h drm/i915: Mark up the calling context for intel_wakeref_put() 2019-11-25 15:29:17 +02:00
intel_engine_pool_types.h drm/i915: Replace struct_mutex for batch pool serialisation 2019-08-04 14:31:18 +01:00
intel_engine_pool.c drm main pull for 5.5-rc1 2019-11-27 17:45:48 -08:00
intel_engine_pool.h drm/i915: Mark i915_request.timeline as a volatile, rcu pointer 2019-09-20 10:24:09 +01:00
intel_engine_types.h drm/i915 fixes for v5.6-rc2 2020-02-14 13:04:46 +10:00
intel_engine_user.c drm/i915/gt: Ignore incomplete engines after init failure 2019-12-26 19:51:42 +00:00
intel_engine_user.h drm/i915: Rename engines to match their user interface 2019-08-07 14:30:55 +01:00
intel_engine.h drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
intel_ggtt.c drm pull for 5.6-rc1 2020-01-30 08:04:01 -08:00
intel_gpu_commands.h drm/i915/gem: Prepare gen7 cmdparser for async execution 2019-12-12 10:42:57 +00:00
intel_gt_irq.c drm/i915/gt: Remove direct invocation of breadcrumb signaling 2019-12-18 17:11:28 +00:00
intel_gt_irq.h drm/i915: Extract general GT interrupt handlers 2019-08-12 15:36:13 +01:00
intel_gt_pm_irq.c drm/i915: Extract general GT interrupt handlers 2019-08-12 15:36:13 +01:00
intel_gt_pm_irq.h drm/i915: Extract GT powermanagement interrupt handling 2019-08-12 15:36:06 +01:00
intel_gt_pm.c drm/i915/gt: Discard stale context state from across idling 2020-01-03 11:26:01 +00:00
intel_gt_pm.h drm/i915/gt: Apply sanitiization just before resume 2019-12-26 12:37:30 +00:00
intel_gt_requests.c drm/i915/gt: Drop the timeline->mutex as we wait for retirement 2020-03-04 13:49:26 +02:00
intel_gt_requests.h drm/i915/gt: Schedule request retirement when timeline idles 2019-11-25 16:39:07 +02:00
intel_gt_types.h drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
intel_gt.c drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
intel_gt.h drm/i915/gt: Ignore incomplete engines after init failure 2019-12-26 19:51:42 +00:00
intel_gtt.c drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
intel_gtt.h drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
intel_llc_types.h drm/i915: Extract GT ring management 2019-10-20 20:45:18 +01:00
intel_llc.c drm/i915: Extract GT render power state management 2019-10-26 19:28:59 +01:00
intel_llc.h drm/i915: Extract GT ring management 2019-10-20 20:45:18 +01:00
intel_lrc_reg.h drm/i915/execlists: Verify context register state before execution 2019-11-02 13:39:13 +00:00
intel_lrc.c drm/i915/execlists: Enable timeslice on partial virtual engine dequeue 2020-03-11 23:12:39 +02:00
intel_lrc.h drm/i915/gt: Merge engine init/setup loops 2019-12-22 15:18:05 +00:00
intel_mocs.c drm/i915: prefer 3-letter acronym for tigerlake 2019-12-28 13:38:09 -08:00
intel_mocs.h drm/i915: Do initial mocs configuration directly 2019-10-16 19:35:37 +01:00
intel_ppgtt.c drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
intel_rc6_types.h drm/i915/gt: Only ignore rc6 parking for PCU on byt/bsw 2019-12-12 08:35:48 +00:00
intel_rc6.c drm/i915/gt: Only ignore rc6 parking for PCU on byt/bsw 2019-12-12 08:35:48 +00:00
intel_rc6.h drm/i915/gt: Simplify rc6 w/a application 2019-12-02 21:57:22 +00:00
intel_renderstate.c drm/i915: Lift i915_vma_pin() out of intel_renderstate_emit() 2019-12-03 13:23:00 +00:00
intel_renderstate.h drm/i915: Lift i915_vma_pin() out of intel_renderstate_emit() 2019-12-03 13:23:00 +00:00
intel_reset_types.h drm/i915: Define explicit wedged on init reset state 2019-09-26 18:44:35 +01:00
intel_reset.c drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
intel_reset.h drm/i915: Don't mix srcu tag and negative error codes 2019-10-07 10:44:48 -07:00
intel_ring_submission.c drm/i915/gt: Pull context activation into central intel_context_pin() 2020-01-09 13:48:00 +00:00
intel_ring_types.h drm/i915/gt: Avoid resetting ring->head outside of its timeline mutex 2020-02-18 09:53:18 +02:00
intel_ring.c drm/i915/execlists: Always force a context reload when rewinding RING_TAIL 2020-02-18 09:53:09 +02:00
intel_ring.h drm/i915/execlists: Always force a context reload when rewinding RING_TAIL 2020-02-18 09:53:09 +02:00
intel_rps_types.h drm/i915: Extract GT render power state management 2019-10-26 19:28:59 +01:00
intel_rps.c drm/i915: Merge i915_request.flags with i915_request.fence.flags 2020-01-06 14:38:55 +00:00
intel_rps.h drm/i915/rps: Add frequency translation helpers 2019-12-13 22:22:05 +00:00
intel_sseu.c drm/i915: Expand subslice mask 2019-08-23 19:14:27 +01:00
intel_sseu.h drm/i915/tgl: s/ss/eu fuse reading support 2019-09-21 08:31:08 +01:00
intel_timeline_types.h drm/i915/gt: Pull GT initialisation under intel_gt_init() 2019-12-22 12:51:32 +00:00
intel_timeline.c drm/i915/gt: Close race between cacheline_retire and free 2020-03-11 23:12:39 +02:00
intel_timeline.h drm/i915/gt: Pull timeline initialise to intel_gt_init_early 2019-11-01 14:47:36 +00:00
intel_workarounds_types.h
intel_workarounds.c drm/i915/tgl: Add Wa_1608008084 2020-03-02 12:10:12 +02:00
intel_workarounds.h
mock_engine.c drm/i915/selftests: Add a mock i915_vma to the mock_ring 2020-02-10 14:45:37 +02:00
mock_engine.h
selftest_context.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
selftest_engine_cs.c drm/i915/selftests: fix uninitialized variable sum when summing up values 2019-12-10 14:35:24 +00:00
selftest_engine_heartbeat.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
selftest_engine_pm.c drm/i915: Mark up the calling context for intel_wakeref_put() 2019-11-25 15:29:17 +02:00
selftest_engine.c drm/i915: Defer final intel_wakeref_put to process context 2019-08-08 21:28:51 +01:00
selftest_engine.h drm/i915: Defer final intel_wakeref_put to process context 2019-08-08 21:28:51 +01:00
selftest_gt_pm.c drm/i915/gt: Manual rc6 entry upon parking 2019-11-27 12:53:27 +00:00
selftest_hangcheck.c drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
selftest_llc.c drm/i915: Extract GT render power state management 2019-10-26 19:28:59 +01:00
selftest_llc.h drm/i915: Extract GT ring management 2019-10-20 20:45:18 +01:00
selftest_lrc.c drm/i915/gt: Avoid resetting ring->head outside of its timeline mutex 2020-02-18 09:53:18 +02:00
selftest_mocs.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
selftest_rc6.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
selftest_rc6.h drm/i915/gt: Manual rc6 entry upon parking 2019-11-27 12:53:27 +00:00
selftest_reset.c drm/i915/selftests: Flush interrupts before disabling tasklets 2019-10-24 09:18:52 +01:00
selftest_timeline.c drm/i915: Serialise with engine-pm around requests on the kernel_context 2019-11-25 13:17:18 +00:00
selftest_workarounds.c drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00