linux/drivers/gpu/drm/i915
Jason Ekstrand 3761baae90 Revert "drm/i915: Propagate errors on awaiting already signaled fences"
This reverts commit 9e31c1fe45.  Ever
since that commit, we've been having issues where a hang in one client
can propagate to another.  In particular, a hang in an app can propagate
to the X server which causes the whole desktop to lock up.

Error propagation along fences sound like a good idea, but as your bug
shows, surprising consequences, since propagating errors across security
boundaries is not a good thing.

What we do have is track the hangs on the ctx, and report information to
userspace using RESET_STATS. That's how arb_robustness works. Also, if my
understanding is still correct, the EIO from execbuf is when your context
is banned (because not recoverable or too many hangs). And in all these
cases it's up to userspace to figure out what is all impacted and should
be reported to the application, that's not on the kernel to guess and
automatically propagate.

What's more, we're also building more features on top of ctx error
reporting with RESET_STATS ioctl: Encrypted buffers use the same, and the
userspace fence wait also relies on that mechanism. So it is the path
going forward for reporting gpu hangs and resets to userspace.

So all together that's why I think we should just bury this idea again as
not quite the direction we want to go to, hence why I think the revert is
the right option here.

For backporters: Please note that you _must_ have a backport of
https://lore.kernel.org/dri-devel/20210602164149.391653-2-jason@jlekstrand.net/
for otherwise backporting just this patch opens up a security bug.

v2: Augment commit message. Also restore Jason's sob that I
accidentally lost.

v3: Add a note for backporters

Signed-off-by: Jason Ekstrand <jason@jlekstrand.net>
Reported-by: Marcin Slusarz <marcin.slusarz@intel.com>
Cc: <stable@vger.kernel.org> # v5.6+
Cc: Jason Ekstrand <jason.ekstrand@intel.com>
Cc: Marcin Slusarz <marcin.slusarz@intel.com>
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/3080
Fixes: 9e31c1fe45 ("drm/i915: Propagate errors on awaiting already signaled fences")
Acked-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Reviewed-by: Jon Bloomfield <jon.bloomfield@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Link: https://patchwork.freedesktop.org/patch/msgid/20210714193419.1459723-3-jason@jlekstrand.net
(cherry picked from commit 93a2711cdd)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2021-07-19 09:55:24 -04:00
..
display drm/i915/display/dg1: Correctly map DPLLs during state readout 2021-07-06 15:10:58 -04:00
gem drm/i915: Revert "drm/i915/gem: Asynchronous cmdparser" 2021-07-19 09:55:20 -04:00
gt drm/i915/gtt: drop the page table optimisation 2021-07-14 08:46:18 -04:00
gvt Merge tag 'gvt-fixes-2021-07-15' of https://github.com/intel/gvt-linux into drm-intel-fixes 2021-07-19 09:54:09 -04:00
selftests Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
.gitignore
dma_resv_utils.c dma-buf: drop the _rcu postfix on function names v3 2021-06-06 11:19:51 +02:00
dma_resv_utils.h
i915_active_types.h drm/i915: drop the __i915_active_call pointer packing 2021-05-05 11:36:23 +01:00
i915_active.c drm/i915: Fix crash in auto_retire 2021-05-12 20:52:48 +03:00
i915_active.h drm/i915: drop the __i915_active_call pointer packing 2021-05-05 11:36:23 +01:00
i915_cmd_parser.c drm/i915: Revert "drm/i915/gem: Asynchronous cmdparser" 2021-07-19 09:55:20 -04:00
i915_config.c
i915_debugfs_params.c
i915_debugfs_params.h
i915_debugfs.c Cross-subsystem Changes: 2021-06-10 13:45:11 +10:00
i915_debugfs.h
i915_drv.c drm/i915: Drop all references to DRM IRQ midlayer 2021-07-06 15:10:58 -04:00
i915_drv.h drm/i915: Revert "drm/i915/gem: Asynchronous cmdparser" 2021-07-19 09:55:20 -04:00
i915_fixed.h
i915_gem_evict.c
i915_gem_gtt.c drm/i915: Finally remove obj->mm.lock. 2021-03-24 17:47:20 +01:00
i915_gem_gtt.h
i915_gem.c Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
i915_gem.h drm/i915: Use tasklet_unlock_spin_wait() in __tasklet_disable_sync_once() 2021-03-25 18:21:03 +01:00
i915_getparam.c
i915_globals.c drm/i915/ttm Initialize the ttm device and memory managers 2021-06-02 13:21:24 +01:00
i915_globals.h drm/i915/ttm Initialize the ttm device and memory managers 2021-06-02 13:21:24 +01:00
i915_gpu_error.c drm/i915: replace IS_GEN and friends with GRAPHICS_VER 2021-06-07 00:59:48 -07:00
i915_gpu_error.h Merge drm/drm-next into drm-misc-next 2021-05-22 07:17:05 +02:00
i915_ioc32.c
i915_ioc32.h
i915_irq.c drm/i915: Drop all references to DRM IRQ midlayer 2021-07-06 15:10:58 -04:00
i915_irq.h drm/i915: Use the correct IRQ during resume 2021-07-06 15:10:58 -04:00
i915_memcpy.c
i915_memcpy.h
i915_mitigations.c
i915_mitigations.h
i915_mm.c Revert "i915: use io_mapping_map_user" 2021-06-02 15:06:10 +03:00
i915_params.c drm/i915/uc: Use platform specific defaults for GuC/HuC enabling 2021-06-09 10:52:03 -07:00
i915_params.h drm/i915/uc: Use platform specific defaults for GuC/HuC enabling 2021-06-09 10:52:03 -07:00
i915_pci.c Cross-subsystem Changes: 2021-06-10 13:45:11 +10:00
i915_perf_types.h
i915_perf.c Cross-subsystem Changes: 2021-06-10 13:45:11 +10:00
i915_perf.h
i915_pmu.c Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
i915_pmu.h
i915_priolist_types.h drm/i915: Remove I915_USER_PRIORITY_SHIFT 2021-03-24 19:30:34 +01:00
i915_pvinfo.h
i915_query.c drm/i915/gem: hide new uAPI behind CONFIG_BROKEN 2021-05-04 10:58:56 +01:00
i915_query.h
i915_reg.h drm/i915/display/dg1: Correctly map DPLLs during state readout 2021-07-06 15:10:58 -04:00
i915_request.c Revert "drm/i915: Propagate errors on awaiting already signaled fences" 2021-07-19 09:55:24 -04:00
i915_request.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
i915_scatterlist.c drm/i915/ttm Initialize the ttm device and memory managers 2021-06-02 13:21:24 +01:00
i915_scatterlist.h drm/i915/ttm Initialize the ttm device and memory managers 2021-06-02 13:21:24 +01:00
i915_scheduler_types.h
i915_scheduler.c drm/i915: Remove I915_USER_PRIORITY_SHIFT 2021-03-24 19:30:34 +01:00
i915_scheduler.h drm/i915: Strip out internal priorities 2021-03-24 19:30:34 +01:00
i915_selftest.h
i915_suspend.c drm/i915: replace IS_GEN and friends with GRAPHICS_VER 2021-06-07 00:59:48 -07:00
i915_suspend.h
i915_sw_fence_work.c
i915_sw_fence_work.h
i915_sw_fence.c dma-buf: drop the _rcu postfix on function names v3 2021-06-06 11:19:51 +02:00
i915_sw_fence.h
i915_switcheroo.c
i915_switcheroo.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
i915_sysfs.h
i915_trace_points.c
i915_trace.h drm/i915: Add frontbuffer tracking tracepoints 2021-04-28 15:55:21 +03:00
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c
i915_utils.h drm/i915: Promote ptrdiff() to i915_utils.h 2021-06-03 23:35:43 +02:00
i915_vgpu.c drm/i915: replace IS_GEN and friends with GRAPHICS_VER 2021-06-07 00:59:48 -07:00
i915_vgpu.h
i915_vma_types.h drm/i915: Remove stray newlines 2021-04-28 15:55:09 +03:00
i915_vma.c Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
i915_vma.h Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
intel_device_info.c drm/i915: replace IS_GEN and friends with GRAPHICS_VER 2021-06-07 00:59:48 -07:00
intel_device_info.h drm/i915/adl_p: CDCLK crawl support for ADL 2021-06-09 17:08:26 +03:00
intel_dram.c drm/i915: replace IS_GEN and friends with GRAPHICS_VER 2021-06-07 00:59:48 -07:00
intel_dram.h
intel_gvt.c
intel_gvt.h
intel_memory_region.c Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
intel_memory_region.h Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
intel_pch.c drm/i915: replace IS_GEN and friends with GRAPHICS_VER 2021-06-07 00:59:48 -07:00
intel_pch.h drm/i915/adl_p: Add PCH support 2021-05-12 16:56:56 -07:00
intel_pm.c drm/i915/adl_p: Same slices mask is not same Dbuf state 2021-06-09 17:24:58 +03:00
intel_pm.h drm/i915: Remove the repeated declaration 2021-05-26 16:20:38 +03:00
intel_region_ttm.c Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
intel_region_ttm.h Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
intel_runtime_pm.c drm/i915: Fix docbook header for __intel_runtime_pm_get_if_active() 2021-03-31 16:57:33 +03:00
intel_runtime_pm.h drm/i915: Remove reference to struct drm_device.pdev 2021-04-29 21:19:10 +02:00
intel_sideband.c drm/i915: replace IS_GEN and friends with GRAPHICS_VER 2021-06-07 00:59:48 -07:00
intel_sideband.h
intel_step.c drm/i915/adl_p: Add IPs stepping mapping 2021-05-14 19:48:38 -07:00
intel_step.h drm/i915: rename i915_rev_steppings->intel_step_info 2021-03-29 14:56:26 +03:00
intel_uncore.c Cross-subsystem Changes: 2021-06-10 13:45:11 +10:00
intel_uncore.h
intel_wakeref.c
intel_wakeref.h
intel_wopcm.c drm/i915: replace IS_GEN and friends with GRAPHICS_VER 2021-06-07 00:59:48 -07:00
intel_wopcm.h
Kconfig VFIO update for v5.14-rc1 2021-07-03 11:49:33 -07:00
Kconfig.debug
Kconfig.profile drm/i915: Fail too long user submissions by default 2021-03-26 01:01:27 +01:00
Kconfig.unstable
Makefile Merge tag 'drm-intel-gt-next-2021-06-10' of git://anongit.freedesktop.org/drm/drm-intel into drm-next 2021-06-11 13:37:34 +10:00
TODO.txt drm/i915: add gem/gt TODO 2021-03-26 09:24:31 +01:00
vlv_suspend.c
vlv_suspend.h