linux-stable/drivers/gpu/drm/i915
Chris Wilson 0b1570b7ff drm/i915: Protect i915_request_await_start from early waits
We need to be extremely careful inside i915_request_await_start() as it
needs to walk the list of requests in the foreign timeline with very
little protection. As we hold our own timeline mutex, we can not nest
inside the signaler's timeline mutex, so all that remains is our RCU
protection. However, to be safe we need to tell the compiler that we may
be traversing the list only under RCU protection, and furthermore we
need to start declaring requests as elements of the timeline from their
construction.

Fixes: 9ddc8ec027 ("drm/i915: Eliminate the trylock for awaiting an earlier request")
Fixes: 6a79d84840 ("drm/i915: Lock signaler timeline while navigating")
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/20200227085723.1961649-11-chris@chris-wilson.co.uk
(cherry picked from commit d22d2d073e)
Signed-off-by: Jani Nikula <jani.nikula@intel.com>
2020-03-02 12:10:46 +02:00
..
display drm/i915/tgl: Add Wa_22010178259:tgl 2020-03-02 10:48:56 +02:00
gem drm/i915/gem: Break up long lists of object reclaim 2020-03-02 10:24:34 +02:00
gt drm/i915/tgl: Add Wa_1608008084 2020-03-02 12:10:12 +02:00
gvt Merge tag 'gvt-fixes-2020-02-26' of https://github.com/intel/gvt-linux into drm-intel-fixes 2020-02-26 22:58:25 +02:00
oa drm/i915: reimplement header test feature 2020-01-02 12:24:10 +02:00
selftests drm/i915: Add missing include file <linux/math64.h> 2020-01-13 13:43:50 +02:00
.gitignore drm/i915: reimplement header test feature 2020-01-02 12:24:10 +02:00
i915_active.c drm/i915: Fix preallocated barrier list append 2020-02-12 13:24:45 +02:00
i915_active.h drm/i915/gt: Acquire ce->active before ce->pin_count/ce->pin_mutex 2020-02-12 13:24:45 +02:00
i915_active_types.h drm/i915: Serialise i915_active_fence_set() with itself 2019-11-27 17:02:14 +00:00
i915_buddy.c drn/i915: Break up long i915_buddy_free_list() with a cond_resched() 2019-12-30 12:10:38 +00:00
i915_buddy.h
i915_cmd_parser.c Correct function name in comment 2019-12-16 23:13:12 +00:00
i915_debugfs.c drm/i915: Pass intel_encoder to enc_to_*() 2020-01-13 20:10:51 +02:00
i915_debugfs.h
i915_drv.c drm/i915/psr: Force PSR probe only after full initialization 2020-03-02 10:46:25 +02:00
i915_drv.h drm/i915/psr: Force PSR probe only after full initialization 2020-03-02 10:46:25 +02:00
i915_fixed.h
i915_gem.c drm/i915: Wean off drm_pci_alloc/drm_pci_free 2020-02-18 09:52:54 +02:00
i915_gem.h i915 features for v5.6: 2019-12-27 15:25:04 +10:00
i915_gem_evict.c drm/i915: Ignore most failures during evict-vm 2019-12-05 13:50:39 +00:00
i915_gem_fence_reg.c drm/i915: Early return for no-op i915_vma_pin_fence() 2020-01-09 08:53:15 +00:00
i915_gem_fence_reg.h
i915_gem_gtt.c ioremap changes for 5.6 2020-01-27 13:03:00 -08:00
i915_gem_gtt.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
i915_getparam.c drm/i915: Introduce DRM_I915_GEM_MMAP_OFFSET 2019-12-04 15:11:44 +00:00
i915_globals.c drm/i915: Ratelimit i915_globals_park 2019-12-18 17:38:56 +00:00
i915_globals.h
i915_gpu_error.c drm/i915: Update drm/i915 bug filing URL 2020-02-17 21:16:45 +02:00
i915_gpu_error.h drm/i915: Stub out i915_gpu_coredump_put 2020-02-12 13:24:34 +02:00
i915_ioc32.c
i915_irq.c drm/i915: prefer 3-letter acronym for ivybridge 2019-12-28 13:38:08 -08:00
i915_irq.h
i915_memcpy.c drm/i915: Align start for memcpy_from_wc 2019-12-11 22:40:41 +00:00
i915_memcpy.h drm/i915: Align start for memcpy_from_wc 2019-12-11 22:40:41 +00:00
i915_mm.c drm/i915/gem: Extend mmap support for lmem 2020-01-04 17:57:46 +00:00
i915_params.c
i915_params.h
i915_pci.c drm/i915/gtt: Downgrade gen7 (ivb, byt, hsw) back to aliasing-ppgtt 2020-02-26 14:04:28 +02:00
i915_perf.c drm/i915: Pin the context as we work on it 2020-01-09 12:50:26 +00:00
i915_perf.h drm/i915/perf: Register sysctl path globally 2019-12-13 20:16:23 +00:00
i915_perf_types.h drm/i915/perf: Register sysctl path globally 2019-12-13 20:16:23 +00:00
i915_pmu.c drm/i915/pmu: Avoid using globals for PMU events 2020-02-26 14:07:50 +02:00
i915_pmu.h drm/i915/pmu: Avoid using globals for PMU events 2020-02-26 14:07:50 +02:00
i915_priolist_types.h
i915_pvinfo.h
i915_query.c drm/i915/query: Align flavour of engine data lookup 2019-11-25 15:08:24 +02:00
i915_query.h
i915_reg.h drm/i915/tgl: Add Wa_22010178259:tgl 2020-03-02 10:48:56 +02:00
i915_request.c drm/i915: Protect i915_request_await_start from early waits 2020-03-02 12:10:46 +02:00
i915_request.h drm/i915/gt: Allow temporary suspension of inflight requests 2020-02-12 16:55:58 +02:00
i915_scatterlist.c
i915_scatterlist.h
i915_scheduler.c drm/i915/gt: Protect defer_request() from new waiters 2020-02-17 21:24:19 +02:00
i915_scheduler.h drm/i915: Use a ctor for TYPESAFE_BY_RCU i915_request 2019-11-22 10:47:38 +00:00
i915_scheduler_types.h
i915_selftest.h
i915_suspend.c
i915_suspend.h
i915_sw_fence.c drm/i915: Propagate errors on awaiting already signaled dma-fences 2019-12-06 19:09:46 +00:00
i915_sw_fence.h drm/i915: Check for error before calling cmpxchg() 2019-12-06 19:09:33 +00:00
i915_sw_fence_work.c drm/i915: Unpin vma->obj on early error 2019-12-18 10:13:03 +00:00
i915_sw_fence_work.h
i915_switcheroo.c
i915_switcheroo.h
i915_syncmap.c
i915_syncmap.h
i915_sysfs.c drm/i915: Start chopping up the GPU error capture 2020-01-10 15:34:33 +00:00
i915_sysfs.h
i915_trace.h drm/i915: Rename pipe update tracepoints 2019-12-19 22:29:58 +02:00
i915_trace_points.c
i915_user_extensions.c
i915_user_extensions.h
i915_utils.c drm/i915: Update drm/i915 bug filing URL 2020-02-17 21:16:45 +02:00
i915_utils.h drm/i915: Improve i915_inject_probe_error macro 2019-12-12 12:35:17 +00:00
i915_vgpu.c
i915_vgpu.h
i915_vma.c drm/i915: Check activity on i915_vma after confirming pin_count==0 2020-02-11 11:49:51 +02:00
i915_vma.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
i915_vma_types.h drm/i915/gtt: split up i915_gem_gtt 2020-01-07 19:27:36 +00:00
intel_csr.c
intel_csr.h
intel_device_info.c drm/i915/tgl: Assume future platforms will inherit TGL's SFC capability 2019-12-31 09:37:35 -08:00
intel_device_info.h drm/i915: Flesh out device_info pretty printer 2019-12-09 09:58:51 +00:00
intel_gvt.c
intel_gvt.h
intel_memory_region.c drm/i915: lookup for mem_region of a mem_type 2020-01-05 01:08:09 +00:00
intel_memory_region.h drm/i915: lookup for mem_region of a mem_type 2020-01-05 01:08:09 +00:00
intel_pch.c drm/i915/pch: convert to using the drm_dbg_kms() macro. 2020-01-10 16:10:35 +02:00
intel_pch.h
intel_pm.c drm/i915/pm: use new struct drm_device logging macros. 2020-01-10 16:10:56 +02:00
intel_pm.h drm/i915: Pass dev_priv to ilk_disable_lp_wm() 2019-12-04 15:37:30 +02:00
intel_region_lmem.c drm/i915/lmem: use new struct drm_device based logging macros. 2020-01-10 16:11:04 +02:00
intel_region_lmem.h
intel_runtime_pm.c
intel_runtime_pm.h
intel_sideband.c drm/i915/sideband: convert to using new struct drm_device logging macros 2020-01-10 16:11:48 +02:00
intel_sideband.h
intel_uncore.c drm/i915/uncore: use new struct drm_device based macros. 2020-01-10 16:12:25 +02:00
intel_uncore.h
intel_wakeref.c drm/i915/gt: Flush ongoing retires during wait_for_idle 2020-01-03 00:33:07 +00:00
intel_wakeref.h drm/i915/gt: Flush ongoing retires during wait_for_idle 2020-01-03 00:33:07 +00:00
intel_wopcm.c
intel_wopcm.h
Kconfig drm/i915: Update drm/i915 bug filing URL 2020-02-17 21:16:45 +02:00
Kconfig.debug Merge drm/drm-next into drm-intel-next-queued 2019-12-11 11:13:50 +02:00
Kconfig.profile drm/i915: Default to a more lenient forced preemption timeout 2019-11-27 10:12:14 +02:00
Kconfig.unstable
Makefile drm/i915: fix header test with GCOV 2020-02-26 14:04:28 +02:00