linux-stable/drivers/gpu/drm/i915
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
..
display drm/i915/display/adlp: Implement new step in the TC voltage swing prog sequence 2022-01-17 10:19:41 +00:00
gem drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
gt drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
gvt 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
pxp drm/i915/pxp: Hold RPM wakelock during PXP unbind 2022-01-10 13:54:53 +00:00
selftests drm/i915: Ensure i915_vma tests do not get -ENOSPC with the locking changes. 2021-12-20 16:34:20 +01:00
.gitignore
i915_active.c drm/i915: Remove unused bits of i915_vma/active api 2021-12-20 16:26:09 +01:00
i915_active.h drm/i915: Remove unused bits of i915_vma/active api 2021-12-20 16:26:09 +01:00
i915_active_types.h drm/i915/active: remove useless i915_utils.h include 2021-12-13 12:04:44 +02:00
i915_buddy.c drm/i915/buddy: add some pretty printing 2021-08-20 09:40:22 +01:00
i915_buddy.h drm/i915/buddy: add some pretty printing 2021-08-20 09:40:22 +01:00
i915_cmd_parser.c
i915_config.c drm/i915: remove IS_ACTIVE 2021-10-07 11:04:05 -07:00
i915_debugfs.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
i915_debugfs.h
i915_debugfs_params.c drm/i915: Use to_gt() helper 2021-12-17 21:51:59 -08:00
i915_debugfs_params.h
i915_deps.c drm/i915: Break out the i915_deps utility 2021-12-22 08:52:57 +01:00
i915_deps.h drm/i915: Break out the i915_deps utility 2021-12-22 08:52:57 +01:00
i915_driver.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
i915_driver.h drm/i915/driver: add i915_driver_ prefix to functions 2021-11-17 11:47:55 +02:00
i915_drv.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
i915_fixed.h
i915_gem.c drm/i915: Force ww lock for i915_gem_object_ggtt_pin_ww, v2. 2021-12-20 16:33:03 +01:00
i915_gem.h
i915_gem_evict.c
i915_gem_gtt.c drm/i915: Use direction definition DMA_BIDIRECTIONAL instead of PCI_DMA_BIDIRECTIONAL 2021-09-30 16:19:45 +02:00
i915_gem_gtt.h
i915_gem_ww.c
i915_gem_ww.h drm/i915: Ditch the i915_gem_ww_ctx loop member 2021-08-20 09:39:41 +01:00
i915_getparam.c drm/i915: Use to_gt() helper 2021-12-17 21:51:59 -08:00
i915_gpu_error.c drm/i915: Use to_gt() helper 2021-12-17 21:51:59 -08:00
i915_gpu_error.h drm/i915: Avoid allocating a page array for the gpu coredump 2021-11-26 08:26:08 +01:00
i915_ioc32.c
i915_ioc32.h
i915_iosf_mbi.h drm/i915: abstraction for iosf to compile on all archs 2021-10-27 00:32:01 -07:00
i915_irq.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
i915_irq.h drm/i915/irq: reduce inlines to reduce header dependencies 2021-08-20 10:28:31 +03:00
i915_memcpy.c
i915_memcpy.h
i915_mitigations.c
i915_mitigations.h
i915_mm.c drm/i915: Skip remap_io_mapping() for non-x86 platforms 2021-12-08 13:26:14 -08:00
i915_mm.h drm/i915: Skip remap_io_mapping() for non-x86 platforms 2021-12-08 13:26:14 -08:00
i915_module.c drm-misc-next for 5.17: 2021-12-09 09:31:45 +01:00
i915_params.c drm/i915: Test all device memory on probing 2021-12-14 15:08:20 +05:30
i915_params.h drm/i915: Test all device memory on probing 2021-12-14 15:08:20 +05:30
i915_pci.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
i915_pci.h drm/i915/pci: rename functions to have i915_pci prefix 2021-08-26 10:50:19 +03:00
i915_perf.c i915: simplify subdirectory registration with register_sysctl() 2022-01-22 08:33:34 +02:00
i915_perf.h
i915_perf_types.h
i915_pmu.c drm/i915: Use to_gt() helper 2021-12-17 21:51:59 -08:00
i915_pmu.h
i915_priolist_types.h
i915_pvinfo.h
i915_query.c drm/i915: Use to_gt() helper 2021-12-17 21:51:59 -08:00
i915_query.h
i915_reg.h drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
i915_request.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
i915_request.h drm/i915: Avoid using the i915_fence_array when collecting dependencies 2021-12-22 08:14:30 +01:00
i915_scatterlist.c drm/i915: Introduce refcounted sg-tables 2021-11-01 18:10:49 +01:00
i915_scatterlist.h drm/i915: Introduce refcounted sg-tables 2021-11-01 18:10:49 +01:00
i915_scheduler.c
i915_scheduler.h
i915_scheduler_types.h
i915_selftest.h
i915_suspend.c
i915_suspend.h
i915_sw_fence.c drm/i915: Drop stealing of bits from i915_sw_fence function pointer 2021-11-30 17:52:15 -08:00
i915_sw_fence.h drm/i915: Drop stealing of bits from i915_sw_fence function pointer 2021-11-30 17:52:15 -08:00
i915_sw_fence_work.c drm/i915: Drop stealing of bits from i915_sw_fence function pointer 2021-11-30 17:52:15 -08:00
i915_sw_fence_work.h
i915_switcheroo.c drm/i915/driver: add i915_driver_ prefix to functions 2021-11-17 11:47:55 +02:00
i915_switcheroo.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c drm/i915: Use to_gt() helper 2021-12-17 21:51:59 -08:00
i915_sysfs.h
i915_trace.h drm/i915/trace: split out display trace to a separate file 2021-12-09 11:21:46 +02:00
i915_trace_points.c
i915_ttm_buddy_manager.c drm/i915/buddy: add some pretty printing 2021-08-20 09:40:22 +01:00
i915_ttm_buddy_manager.h
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c
i915_utils.h drm for 5.16-rc1 2021-11-02 16:47:49 -07:00
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
i915_vma.h drm/i915: Remove pages_mutex and intel_gtt->vma_ops.set/clear_pages members, v3. 2021-12-20 16:31:02 +01:00
i915_vma_snapshot.c drm/i915: Update error capture code to avoid using the current vma state 2021-12-01 16:53:22 +01:00
i915_vma_snapshot.h drm/i915: Update error capture code to avoid using the current vma state 2021-12-01 16:53:22 +01:00
i915_vma_types.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_device_info.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_device_info.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_dram.c drm/i915: Remove memory frequency calculation 2021-10-19 10:45:52 +03:00
intel_dram.h
intel_gvt.c drm/i915: Use to_gt() helper 2021-12-17 21:51:59 -08:00
intel_gvt.h
intel_memory_region.c drm/i915: Test all device memory on probing 2021-12-14 15:08:20 +05:30
intel_memory_region.h drm/i915/ttm: Drop region reference counting 2021-11-25 09:36:16 +01:00
intel_pch.c drm/i915/rpl-s: Add PCH Support for Raptor Lake S 2021-12-08 13:03:04 -08:00
intel_pch.h drm/i915/rpl-s: Add PCH Support for Raptor Lake S 2021-12-08 13:03:04 -08:00
intel_pcode.c drm/i915: split out intel_pcode.[ch] to separate file 2021-10-14 18:04:17 +03:00
intel_pcode.h drm/i915: split out intel_pcode.[ch] to separate file 2021-10-14 18:04:17 +03:00
intel_pm.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_pm.h drm/i915/wm: provide wrappers around watermark vfuncs calls (v3) 2021-09-29 08:53:57 +03:00
intel_pm_types.h drm/i915: split out intel_pm_types.h 2021-12-03 11:28:12 +02:00
intel_region_ttm.c drm/i915/ttm: Drop region reference counting 2021-11-25 09:36:16 +01:00
intel_region_ttm.h drm/i915/ttm: Drop region reference counting 2021-11-25 09:36:16 +01:00
intel_runtime_pm.c lib/stackdepot: allow optional init and stack_table allocation by kvmalloc() 2022-01-22 08:33:37 +02:00
intel_runtime_pm.h drm/i915: intel_runtime_pm.h does not actually need intel_display.h 2021-08-20 10:28:49 +03:00
intel_sbi.c drm/i915: rename intel_sideband.[ch] to intel_sbi.[ch] 2021-10-14 18:05:04 +03:00
intel_sbi.h drm/i915: rename intel_sideband.[ch] to intel_sbi.[ch] 2021-10-14 18:05:04 +03:00
intel_step.c drm/i915: Rename GT_STEP to GRAPHICS_STEP 2021-11-02 13:05:40 -07:00
intel_step.h drm/i915: Rename GT_STEP to GRAPHICS_STEP 2021-11-02 13:05:40 -07:00
intel_uncore.c drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
intel_uncore.h drm/i915: Flush TLBs before releasing backing store 2022-01-25 20:06:06 +02:00
intel_wakeref.c
intel_wakeref.h drm/i915/guc: Take engine PM when a context is pinned with GuC submission 2021-10-15 10:37:26 -07:00
intel_wopcm.c drm/i915: Use to_gt() helper 2021-12-17 21:51:59 -08:00
intel_wopcm.h
Kconfig Merge drm/drm-next into drm-intel-next 2021-11-22 17:35:32 +02:00
Kconfig.debug
Kconfig.profile
Kconfig.unstable
Makefile 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
TODO.txt
vlv_sideband.c drm/i915: abstraction for iosf to compile on all archs 2021-10-27 00:32:01 -07:00
vlv_sideband.h drm/i915: split out vlv sideband to a separate file 2021-10-14 12:22:55 +03:00
vlv_suspend.c
vlv_suspend.h