linux_dsm_epyc7002/drivers/gpu/drm/i915/gt
Chris Wilson 408464b4cb drm/i915/gt: Pull checking rps->pm_events under the irq_lock
Avoid angering kcsan by serialising the read of the pm_events with the
write in rps_disable_interrupts.

[ 6268.713419] BUG: KCSAN: data-race in intel_rps_park [i915] / rps_work [i915]
[ 6268.713437]
[ 6268.713449] write to 0xffff8881eda8efac of 4 bytes by task 1127 on cpu 3:
[ 6268.713680]  intel_rps_park+0x136/0x260 [i915]
[ 6268.713905]  __gt_park+0x61/0xa0 [i915]
[ 6268.714128]  ____intel_wakeref_put_last+0x42/0x90 [i915]
[ 6268.714352]  __intel_wakeref_put_work+0xd3/0xf0 [i915]
[ 6268.714369]  process_one_work+0x3b1/0x690
[ 6268.714384]  worker_thread+0x80/0x670
[ 6268.714398]  kthread+0x19a/0x1e0
[ 6268.714412]  ret_from_fork+0x1f/0x30
[ 6268.714423]
[ 6268.714435] read to 0xffff8881eda8efac of 4 bytes by task 950 on cpu 2:
[ 6268.714664]  rps_work+0xc2/0x680 [i915]
[ 6268.714679]  process_one_work+0x3b1/0x690
[ 6268.714693]  worker_thread+0x80/0x670
[ 6268.714707]  kthread+0x19a/0x1e0
[ 6268.714720]  ret_from_fork+0x1f/0x30

v2: Mark all reads and writes of rpm->pm_events.

The flow of enabling/disabling rps is stronly ordered, so the writes and
interrupt generation are also strongly ordered -- just this may not be
visible to the compiler, so provide annotations.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20200311092624.10012-1-chris@chris-wilson.co.uk
2020-03-11 11:59:49 +00:00
..
selftests
uc drm/i915: Apply i915_request_skip() on submission 2020-03-04 14:29:50 +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_renderclear.c drm/i915/gen7: Clear all EU/L3 residual contexts 2020-03-06 08:59:06 +00:00
gen7_renderclear.h drm/i915/gen7: Clear all EU/L3 residual contexts 2020-03-06 08:59:06 +00:00
gen7_renderstate.c
gen8_ppgtt.c drm/i915/vgpu: improve vgpu abstractions 2020-03-03 17:46:54 +02: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
hsw_clear_kernel.c drm/i915/gen7: Clear all EU/L3 residual contexts 2020-03-06 08:59:06 +00:00
intel_breadcrumbs.c drm/i915/gt: Prevent queuing retire workers on the virtual engine 2020-02-07 10:54:49 +00:00
intel_context_param.c drm/i915: Allow userspace to specify ringsize on construction 2020-02-25 19:23:19 +00:00
intel_context_param.h drm/i915: Allow userspace to specify ringsize on construction 2020-02-25 19:23:19 +00:00
intel_context_sseu.c drm/i915/gt: Pull sseu context updates under gt 2020-02-04 10:14:03 +00:00
intel_context_types.h drm/i915/gt: Mark up racy reads for intel_context.inflight 2020-03-10 23:12:38 +00:00
intel_context.c drm/i915/gt: Prevent allocation on a banned context 2020-03-03 17:30:20 +00:00
intel_context.h drm/i915: Track hw reported context runtime 2020-02-16 15:16:22 +00:00
intel_engine_cs.c drm/i915/gt: Use scnprintf() for avoiding potential buffer overflow 2020-03-11 10:54:59 +00:00
intel_engine_heartbeat.c drm/i915/gt: Fix up missing error propagation for heartbeat pulses 2020-02-18 20:32:21 +00:00
intel_engine_heartbeat.h
intel_engine_pm.c drm/i915/gt: Include a tell-tale for engine parking 2020-01-22 17:10:15 +00:00
intel_engine_pm.h
intel_engine_pool_types.h
intel_engine_pool.c
intel_engine_pool.h
intel_engine_types.h drm/i915/gt: Expose busywait duration to sysfs 2020-02-28 22:03:41 +00:00
intel_engine_user.c drm/i915/gt: Make WARN* drm specific where drm_priv ptr is available 2020-01-22 17:53:37 +02:00
intel_engine_user.h
intel_engine.h drm/i915/gt: Defend against concurrent updates to execlists->active 2020-03-09 20:38:57 +00:00
intel_ggtt.c drm/i915/ggtt: do not set bits 1-11 in gen12 ptes 2020-02-27 22:38:11 +00:00
intel_gpu_commands.h drm/i915/gen7: Clear all EU/L3 residual contexts 2020-03-06 08:59:06 +00:00
intel_gt_irq.c drm/i915/gt: Hook up CS_MASTER_ERROR_INTERRUPT 2020-01-29 15:16:52 +00:00
intel_gt_irq.h drm/i915/gt: Reorganise gen8+ interrupt handler 2020-01-28 12:30:00 +00:00
intel_gt_pm_irq.c
intel_gt_pm_irq.h
intel_gt_pm.c drm/i915: extract engine WA programming to common resume function 2020-01-31 23:54:12 +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-03 17:30:20 +00:00
intel_gt_requests.h
intel_gt_types.h drm/i915: Remove i915->kernel_context 2019-12-21 16:37:10 +00:00
intel_gt.c drm/i915/gt: Push the GPU cancellation to the backend 2020-02-22 10:20:12 +00:00
intel_gt.h drm/i915/gt: Drop rogue space in the middle of GT_TRACE 2020-01-16 15:41:34 +00:00
intel_gtt.c drm/i915/gt: Pull marking vm as closed underneath the vm->mutex 2020-02-28 12:33:07 +00:00
intel_gtt.h drm/i915/gt: Pull marking vm as closed underneath the vm->mutex 2020-02-28 12:33:07 +00:00
intel_llc_types.h
intel_llc.c drm/i915/gt: Do not attempt to reprogram IA/ring frequencies for dgfx 2020-02-19 22:27:10 +00:00
intel_llc.h
intel_lrc_reg.h drm/i915: Track hw reported context runtime 2020-02-16 15:16:22 +00:00
intel_lrc.c drm/i915/execlists: Mark up data-races in virtual engines 2020-03-10 23:12:39 +00: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/gt: Refactor l3cc/mocs availability 2020-02-19 14:09:18 +00:00
intel_mocs.h
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: properly sanity check batch_start_offset 2020-03-06 13:15:49 +00:00
intel_rc6.h
intel_renderstate.c
intel_renderstate.h
intel_reset_types.h
intel_reset.c drm/i915/gt: Cancel banned contexts after GT reset 2020-03-04 20:28:02 +00:00
intel_reset.h
intel_ring_submission.c drm/i915/gt: Wait for the wa batch to be pinned 2020-03-07 17:10:35 +00:00
intel_ring_types.h drm/i915/gt: Avoid resetting ring->head outside of its timeline mutex 2020-02-11 12:03:22 +00:00
intel_ring.c drm/i915/execlists: Always force a context reload when rewinding RING_TAIL 2020-02-07 21:41:46 +00:00
intel_ring.h drm/i915/execlists: Always force a context reload when rewinding RING_TAIL 2020-02-07 21:41:46 +00:00
intel_rps_types.h
intel_rps.c drm/i915/gt: Pull checking rps->pm_events under the irq_lock 2020-03-11 11:59:49 +00:00
intel_rps.h drm/i915/rps: Add frequency translation helpers 2019-12-13 22:22:05 +00:00
intel_sseu.c
intel_sseu.h
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-07 00:05:54 +00:00
intel_timeline.h
intel_workarounds_types.h drm/i915/gt: Skip rmw for masked registers 2020-02-01 09:21:57 +00:00
intel_workarounds.c drm/i915/tgl: Don't treat unslice registers as masked 2020-03-09 09:17:12 -07:00
intel_workarounds.h
ivb_clear_kernel.c drm/i915/gen7: Clear all EU/L3 residual contexts 2020-03-06 08:59:06 +00:00
mock_engine.c drm/i915: Apply i915_request_skip() on submission 2020-03-04 14:29:50 +00: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
selftest_engine_heartbeat.c drm/i915/selftests: Disable heartbeat around manual pulse tests 2020-02-28 09:25:41 +00:00
selftest_engine_pm.c
selftest_engine.c
selftest_engine.h
selftest_gt_pm.c
selftest_hangcheck.c drm/i915: Apply i915_request_skip() on submission 2020-03-04 14:29:50 +00:00
selftest_llc.c drm/i915/gt: Do not attempt to reprogram IA/ring frequencies for dgfx 2020-02-19 22:27:10 +00:00
selftest_llc.h
selftest_lrc.c drm/i915/selftests: Fix uninitialized variable 2020-03-03 17:30:20 +00:00
selftest_mocs.c drm/i915/gt: Refactor l3cc/mocs availability 2020-02-19 14:09:18 +00:00
selftest_rc6.c drm/i915/selftests: Show the RC6 residency on parking failure 2020-01-24 10:09:56 +00:00
selftest_rc6.h
selftest_reset.c drm/i915/guc: Kill USES_GUC_SUBMISSION macro 2020-02-20 17:48:03 +00:00
selftest_ring_submission.c drm/i915/gt: Wait for the wa batch to be pinned 2020-03-07 17:10:35 +00:00
selftest_timeline.c drm/i915/selftests: Remove erroneous intel_engine_pm_put 2020-02-09 13:47:26 +00:00
selftest_workarounds.c drm/i915/selftests: Also wait for the scratch buffer to be bound 2020-01-31 15:10:02 +00:00
sysfs_engines.c drm/i915/gt: Expose heartbeat interval via sysfs 2020-02-28 22:03:49 +00:00
sysfs_engines.h drm/i915/gt: Expose engine properties via sysfs 2020-02-28 22:03:19 +00:00