linux/drivers/gpu/drm/i915/gt
Tvrtko Ursulin 7938d61591 drm/i915: Flush TLBs before releasing backing store
We need to flush TLBs before releasing backing store otherwise userspace
is able to encounter stale entries if a) it is not declaring access to
certain buffers and b) it races with the backing store release from a
such undeclared execution already executing on the GPU in parallel.

The approach taken is to mark any buffer objects which were ever bound
to the GPU and to trigger a serialized TLB flush when their backing
store is released.

Alternatively the flushing could be done on VMA unbind, at which point
we would be able to ascertain whether there is potential a parallel GPU
execution (which could race), but essentially it boils down to paying
the cost of TLB flushes potentially needlessly at VMA unbind time (when
the backing store is not known to be going away so not needed for
safety), versus potentially needlessly at backing store relase time
(since we at that point cannot tell whether there is anything executing
on the GPU which uses that object).

Thereforce simplicity of implementation has been chosen for now with
scope to benchmark and refine later as required.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
Reported-by: Sushma Venkatesh Reddy <sushma.venkatesh.reddy@intel.com>
Reviewed-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Acked-by: Dave Airlie <airlied@redhat.com>
Cc: Daniel Vetter <daniel.vetter@ffwll.ch>
Cc: Jon Bloomfield <jon.bloomfield@intel.com>
Cc: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
Cc: Jani Nikula <jani.nikula@intel.com>
Cc: stable@vger.kernel.org
Signed-off-by: Linus Torvalds <torvalds@linux-foundation.org>
2022-01-25 20:06:06 +02:00
..
selftests
shaders
uc Merge tag 'drm-intel-gt-next-2021-12-23' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-12-24 06:14:51 +10:00
gen2_engine_cs.c drm/i915/gt: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:06 -07:00
gen2_engine_cs.h
gen6_engine_cs.c
gen6_engine_cs.h
gen6_ppgtt.c drm/i915: Remove pages_mutex and intel_gtt->vma_ops.set/clear_pages members, v3. 2021-12-20 16:31:02 +01:00
gen6_ppgtt.h drm/i915: Create a dummy object for gen6 ppgtt 2021-11-19 17:38:03 +00:00
gen6_renderstate.c
gen7_renderclear.c drm/i915/gt: Disable HiZ Raw Stall Optimization on broken gen7 2021-05-18 08:56:53 -04:00
gen7_renderclear.h
gen7_renderstate.c
gen8_engine_cs.c drm/i915: Rename GT_STEP to GRAPHICS_STEP 2021-11-02 13:05:40 -07:00
gen8_engine_cs.h
gen8_ppgtt.c drm/i915/gtt/xehpsdv: move scratch page to system memory 2021-12-09 22:09:29 +05:30
gen8_ppgtt.h drm/i915: Reduce the number of objects subject to memcpy recover 2021-09-24 08:19:16 +02:00
gen8_renderstate.c
gen9_renderstate.c
hsw_clear_kernel.c
intel_breadcrumbs_types.h drm/i915/guc: Direct all breadcrumbs for a class to single breadcrumbs 2021-07-27 17:31:35 -07:00
intel_breadcrumbs.c drm/i915/guc: Implement GuC priority management 2021-07-27 17:32:27 -07:00
intel_breadcrumbs.h drm/i915/guc: Direct all breadcrumbs for a class to single breadcrumbs 2021-07-27 17:31:35 -07:00
intel_context_param.h drm/i915/gem: Set the watchdog timeout directly in intel_context_set_gem (v2) 2021-07-08 19:43:49 +02:00
intel_context_sseu.c drm/i915/gt: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:06 -07:00
intel_context_types.h drm/i915: Don't disable interrupts and pretend a lock as been acquired in __timeline_mark_lock(). 2021-12-13 09:25:58 +00:00
intel_context.c drm/i915: Drop stealing of bits from i915_sw_fence function pointer 2021-11-30 17:52:15 -08:00
intel_context.h drm/i915: Don't disable interrupts and pretend a lock as been acquired in __timeline_mark_lock(). 2021-12-13 09:25:58 +00:00
intel_engine_cs.c drm/i915/gt: Use hw_engine_masks as reset_domains 2021-12-08 18:27:05 -05:00
intel_engine_heartbeat.c drm/i915: remove IS_ACTIVE 2021-10-07 11:04:05 -07:00
intel_engine_heartbeat.h drm/i915: Reset GPU immediately if submission is disabled 2021-07-27 17:31:45 -07:00
intel_engine_pm.c drm/i915: Add ww ctx to i915_gem_object_trylock 2021-12-21 13:27:29 +01:00
intel_engine_pm.h drm/i915/guc: Take engine PM when a context is pinned with GuC submission 2021-10-15 10:37:26 -07:00
intel_engine_stats.h drm/i915/pmu: Add a name to the execlists stats 2021-10-28 11:02:18 -07:00
intel_engine_types.h drm/i915/gt: Use hw_engine_masks as reset_domains 2021-12-08 18:27:05 -05:00
intel_engine_user.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
intel_engine_user.h
intel_engine.h drm/i915/guc: Connect UAPI to GuC multi-lrc interface 2021-10-15 10:45:50 -07:00
intel_execlists_submission.c drm/i915: Use __GFP_KSWAPD_RECLAIM in the capture code 2021-11-26 08:26:10 +01:00
intel_execlists_submission.h drm/i915/guc: GuC virtual engines 2021-07-27 17:31:28 -07:00
intel_ggtt_fencing.c drm/i915/gt: Fix -EDEADLK handling regression 2021-07-13 15:56:21 -04:00
intel_ggtt_fencing.h
intel_ggtt.c Merge tag 'drm-intel-gt-next-2021-12-23' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-12-24 06:14:51 +10:00
intel_gpu_commands.h drm/i915/pxp: Implement arb session teardown 2021-10-04 13:10:50 -04:00
intel_gt_buffer_pool_types.h Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
intel_gt_buffer_pool.c drm/i915: Introduce to_gt() helper 2021-12-17 21:47:36 -08:00
intel_gt_buffer_pool.h
intel_gt_clock_utils.c drm/i915/gt: remove GRAPHICS_VER == 10 2021-07-29 10:06:10 -07:00
intel_gt_clock_utils.h
intel_gt_debugfs.c drm/i915/gt: move remaining debugfs interfaces into gt 2021-10-14 21:47:49 -07:00
intel_gt_debugfs.h drm/i915/guc: Speed up GuC log dumps 2021-12-20 15:33:16 -08:00
intel_gt_engines_debugfs.c drm/i915: rename debugfs_engines files 2021-09-18 23:33:22 -07:00
intel_gt_engines_debugfs.h drm/i915: rename debugfs_engines files 2021-09-18 23:33:22 -07:00
intel_gt_irq.c drm/i915/pxp: Implement PXP irq handler 2021-10-04 13:10:55 -04:00
intel_gt_irq.h drm/i915/gt: Move CS interrupt handler to the backend 2021-05-25 15:14:40 +02:00
intel_gt_pm_debugfs.c Merge tag 'drm-intel-gt-next-2021-10-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-10-22 06:30:34 +10:00
intel_gt_pm_debugfs.h drm/i915/gt: move remaining debugfs interfaces into gt 2021-10-14 21:47:49 -07:00
intel_gt_pm_irq.c drm/i915/gt: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:06 -07:00
intel_gt_pm_irq.h
intel_gt_pm.c drm/i915/gt: Hold RPM wakelock during PXP suspend 2021-11-24 09:07:18 -05:00
intel_gt_pm.h drm/i915/guc: Take engine PM when a context is pinned with GuC submission 2021-10-15 10:37:26 -07:00
intel_gt_requests.c drm/i915/guc: Update intel_gt_wait_for_idle to work with GuC 2021-07-22 10:07:23 -07:00
intel_gt_requests.h drm/i915: use linux/stddef.h due to "isystem: trim/fixup stdarg.h and other headers" 2021-09-06 09:31:23 +02:00
intel_gt_types.h drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
intel_gt.c drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
intel_gt.h drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
intel_gtt.c Merge tag 'drm-intel-gt-next-2021-12-23' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-12-24 06:14:51 +10:00
intel_gtt.h Merge tag 'drm-intel-gt-next-2021-12-23' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-12-24 06:14:51 +10:00
intel_llc_types.h
intel_llc.c Merge tag 'drm-intel-gt-next-2021-10-21' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-10-22 06:30:34 +10:00
intel_llc.h
intel_lrc_reg.h drm/i915/guc: Implement GuC context operations for new inteface 2021-07-22 10:07:08 -07:00
intel_lrc.c drm/i915/dg2: Add Wa_16013000631 2021-12-02 21:38:38 -08:00
intel_lrc.h
intel_migrate_types.h drm/i915/gt: Pipelined page migration 2021-06-17 14:23:05 +01:00
intel_migrate.c drm/i915: Avoid using the i915_fence_array when collecting dependencies 2021-12-22 08:14:30 +01:00
intel_migrate.h drm/i915: Avoid using the i915_fence_array when collecting dependencies 2021-12-22 08:14:30 +01:00
intel_mocs.c drm/i915: Rename GT_STEP to GRAPHICS_STEP 2021-11-02 13:05:40 -07:00
intel_mocs.h drm/i915/gt: Add "intel_" as prefix in set_mocs_index() 2021-09-20 08:23:27 -07:00
intel_ppgtt.c drm/i915: Remove pages_mutex and intel_gtt->vma_ops.set/clear_pages members, v3. 2021-12-20 16:31:02 +01:00
intel_rc6_types.h
intel_rc6.c drm/i915/dg2: Add Wa_16011777198 2021-12-02 21:38:18 -08:00
intel_rc6.h
intel_region_lmem.c drm/i915/xehpsdv: set min page-size to 64K 2021-12-09 22:09:28 +05:30
intel_region_lmem.h
intel_renderstate.c drm/i915/gt: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:06 -07:00
intel_renderstate.h drm/i915: Break out dma_resv ww locking utilities to separate files 2021-06-17 14:22:59 +01:00
intel_reset_types.h
intel_reset.c Merge tag 'drm-intel-next-2021-12-14' of ssh://git.freedesktop.org/git/drm/drm-intel into drm-next 2021-12-17 15:23:49 +10:00
intel_reset.h
intel_ring_submission.c drm/i915: vma is always backed by an object. 2021-11-19 17:38:03 +00:00
intel_ring_types.h
intel_ring.c drm/i915: Don't back up pinned LMEM context images and rings during suspend 2021-09-24 08:19:15 +02:00
intel_ring.h drm/i915/gt: Pipelined page migration 2021-06-17 14:23:05 +01:00
intel_rps_types.h
intel_rps.c drm/i915/guc: Request RP0 before loading firmware 2021-12-21 11:24:55 -08:00
intel_rps.h drm/i915/guc: Request RP0 before loading firmware 2021-12-21 11:24:55 -08:00
intel_sseu_debugfs.c drm/i915: rename debugfs_gt files 2021-09-18 23:33:19 -07:00
intel_sseu_debugfs.h
intel_sseu.c drm/i915/xehp: Check new fuse bits for SFC availability 2021-09-20 21:42:09 -07:00
intel_sseu.h drm/i915/xehpsdv: Add compute DSS type 2021-08-11 08:21:49 -07:00
intel_timeline_types.h Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
intel_timeline.c drm/i915: Catch yet another unconditioal clflush 2021-10-18 12:45:19 +03:00
intel_timeline.h Merge tag 'drm-intel-gt-next-2021-04-06' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-04-08 12:46:12 +10:00
intel_workarounds_types.h drm/i915/guc: Provide mmio list to be saved/restored on engine reset 2021-07-27 17:31:55 -07:00
intel_workarounds.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
intel_workarounds.h drm/i915: Make wa list per-gt 2021-09-20 08:06:36 -07:00
ivb_clear_kernel.c
mock_engine.c drm/i915: Add ww ctx to i915_gem_object_trylock 2021-12-21 13:27:29 +01:00
mock_engine.h
selftest_context.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_engine_cs.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_engine_heartbeat.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_engine_heartbeat.h drm/i915/selftest: Fix hangcheck self test for GuC submission 2021-07-27 17:32:23 -07:00
selftest_engine_pm.c drm/i915/pmu: Wait longer for busyness data to be available from GuC 2021-12-09 09:56:14 -08:00
selftest_engine.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_engine.h
selftest_execlists.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_gt_pm.c Merge tag 'drm-intel-gt-next-2021-12-23' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-12-24 06:14:51 +10:00
selftest_hangcheck.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_llc.c drm/i915/gt: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:06 -07:00
selftest_llc.h
selftest_lrc.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_migrate.c drm/i915: Add ww ctx to i915_gem_object_trylock 2021-12-21 13:27:29 +01:00
selftest_mocs.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_rc6.c drm/i915/gt: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:06 -07:00
selftest_rc6.h
selftest_reset.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_ring_submission.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_ring.c
selftest_rps.c drm/i915/gt: replace IS_GEN and friends with GRAPHICS_VER 2021-06-05 15:09:06 -07:00
selftest_rps.h
selftest_slpc.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_timeline.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
selftest_workarounds.c drm/i915/gt: Use to_gt() helper 2021-12-17 21:50:06 -08:00
shmem_utils.c drm/i915/dg1: Fix mapping type for default state object 2021-04-27 16:19:52 +01:00
shmem_utils.h
st_shmem_utils.c
sysfs_engines.c
sysfs_engines.h