2
0
mirror of git://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git synced 2025-09-04 20:19:47 +08:00
linux/drivers/gpu/drm/i915/gt
Krzysztof Karas e49477f7f7
drm/i915/gt: Use spin_lock_irqsave() in interruptible context
spin_lock/unlock() functions used in interrupt contexts could
result in a deadlock, as seen in GitLab issue #13399,
which occurs when interrupt comes in while holding a lock.

Try to remedy the problem by saving irq state before spin lock
acquisition.

v2: add irqs' state save/restore calls to all locks/unlocks in
 signal_irq_work() execution (Maciej)

v3: use with spin_lock_irqsave() in guc_lrc_desc_unpin() instead
 of other lock/unlock calls and add Fixes and Cc tags (Tvrtko);
 change title and commit message

Fixes: 2f2cc53b5f ("drm/i915/guc: Close deregister-context race against CT-loss")
Closes: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/13399
Signed-off-by: Krzysztof Karas <krzysztof.karas@intel.com>
Cc: <stable@vger.kernel.org> # v6.9+
Reviewed-by: Maciej Patelczyk <maciej.patelczyk@intel.com>
Reviewed-by: Andi Shyti <andi.shyti@linux.intel.com>
Signed-off-by: Andi Shyti <andi.shyti@linux.intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/pusppq5ybyszau2oocboj3mtj5x574gwij323jlclm5zxvimmu@mnfg6odxbpsv
(cherry picked from commit c088387ddd)
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
2025-02-17 09:22:29 -05:00
..
selftests
shaders
uc drm/i915/gt: Use spin_lock_irqsave() in interruptible context 2025-02-17 09:22:29 -05:00
gen2_engine_cs.c drm/i915/gt: s/gen3/gen2/ 2024-10-15 17:49:24 +03:00
gen2_engine_cs.h drm/i915/gt: s/gen3/gen2/ 2024-10-15 17:49:24 +03:00
gen6_engine_cs.c drm/i915/gt: Move engine registers to their own header 2022-01-11 14:03:25 -08:00
gen6_engine_cs.h
gen6_ppgtt.c drm/i915: use pat_index instead of cache_level 2023-05-11 17:38:55 +02: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: remove all IS_<PLATFORM>_GT<N>() macros 2024-10-24 13:14:37 +03:00
gen7_renderclear.h
gen7_renderstate.c
gen8_engine_cs.c Merge tag 'drm-intel-gt-next-2024-04-26' of https://anongit.freedesktop.org/git/drm/drm-intel into drm-next 2024-04-30 14:40:43 +10:00
gen8_engine_cs.h drm/i915/gt: Support aux invalidation on all engines 2023-07-26 14:35:32 +02:00
gen8_ppgtt.c Linux 6.9-rc5 2024-04-22 14:35:52 +10:00
gen8_ppgtt.h drm/i915: use pat_index instead of cache_level 2023-05-11 17:38:55 +02:00
gen8_renderstate.c
gen9_renderstate.c
hsw_clear_kernel.c
intel_breadcrumbs_types.h drm/i915: Track gt pm wakerefs 2023-11-20 12:36:56 +01:00
intel_breadcrumbs.c drm/i915: use NULL for zero wakeref_t instead of plain integer 0 2024-10-04 10:29:24 +03: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/lrc: move lrc_get_runtime() to intel_lrc.c 2022-02-17 15:42:09 +02:00
intel_context_types.h drm/i915: Support replaying GPU hangs with captured context image 2024-05-16 07:37:05 +00:00
intel_context.c drm/i915: Support replaying GPU hangs with captured context image 2024-05-16 07:37:05 +00:00
intel_context.h drm/i915: Support replaying GPU hangs with captured context image 2024-05-16 07:37:05 +00:00
intel_engine_cs.c drm/i915/gt: Empty uabi engines list during intel_engines_release() 2024-08-05 23:10:46 +01:00
intel_engine_heartbeat.c Merge drm/drm-next into drm-misc-next-fixes 2024-02-26 15:12:53 +01: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/gt: Reset queue_priority_hint on parking 2024-03-28 12:16:16 -04:00
intel_engine_pm.h drm/i915: Move for_each_engine* out of i915_drv.h 2023-11-06 09:04:52 +00:00
intel_engine_regs.h drm/i915/pmu: Add support for gen2 2024-10-15 17:51:00 +03: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 i915/guc: Ensure busyness counter increases motonically 2024-12-13 15:13:50 -08:00
intel_engine_user.c drm/i915/gsc: Mark internal GSC engine with reserved uabi class 2023-11-29 10:23:11 +02:00
intel_engine_user.h
intel_engine.h drm/i915/gt: Remove unused execlists_unwind_incomplete_requests 2024-11-04 16:31:44 -05:00
intel_execlists_submission.c drm/i915/gt: Remove unused execlists_unwind_incomplete_requests 2024-11-04 16:31:44 -05:00
intel_execlists_submission.h drm/i915: Fix up locking around dumping requests lists 2023-01-30 15:48:21 -05:00
intel_ggtt_fencing.c drm: Fix kerneldoc for "Returns" section 2024-08-26 16:40:09 +02:00
intel_ggtt_fencing.h
intel_ggtt_gmch.c drm: move intel-gtt.h under include/drm/intel 2024-05-31 16:10:50 +03:00
intel_ggtt_gmch.h drm/i915/gt: Re-do the intel-gtt split 2022-06-22 15:52:56 -07:00
intel_ggtt.c drm/i915/dpt: Evict all DPT VMAs on suspend 2024-11-28 17:33:44 +02:00
intel_gpu_commands.h drm/i915/gt: Add Wa_14019789679 2024-08-05 22:33:39 +01:00
intel_gsc.c drm/i915: Drop dead code for xehpsdv 2024-03-22 14:14:39 -07:00
intel_gsc.h drm/i915/gt: reconcile Excess struct member kernel-doc warnings 2024-01-10 11:56:19 +02:00
intel_gt_buffer_pool_types.h
intel_gt_buffer_pool.c drm/i915: add a dedicated workqueue inside drm_i915_private 2023-06-10 06:33:11 +03:00
intel_gt_buffer_pool.h
intel_gt_ccs_mode.c drm/i915/gt: Fix CCS id's calculation for CCS mode setting 2024-05-29 11:35:38 +03:00
intel_gt_ccs_mode.h drm/i915/gt: Automate CCS Mode setting during engine resets 2024-05-06 14:15:24 -04:00
intel_gt_clock_utils.c drm/i915: use i9xx_fsb_freq() for GT clock frequency 2024-06-17 11:54:31 +03:00
intel_gt_clock_utils.h
intel_gt_debugfs.c drm/i915/gt: Create per-gt debugfs files 2023-03-21 10:09:31 +01:00
intel_gt_debugfs.h drm/i915/debugfs: Do not return '0' if there is nothing to return 2022-03-22 10:08:20 +00:00
intel_gt_defines.h i915/drm/gt: Move the gt defines in the gt directory 2023-08-02 15:41:31 +02:00
intel_gt_engines_debugfs.c drm/i915: Move for_each_engine* out of i915_drv.h 2023-11-06 09:04:52 +00: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/irq: s/gen3/gen2/ 2024-10-15 17:29:30 +03: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_mcr.c drm/i915: Drop dead code for pvc 2024-03-22 14:14:56 -07:00
intel_gt_mcr.h drm/i915: Update IP_VER(12, 50) 2024-03-22 14:14:52 -07:00
intel_gt_pm_debugfs.c Merge tag 'drm-intel-gt-next-2024-10-23' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2024-10-25 05:57:38 +10:00
intel_gt_pm_debugfs.h drm/i915/debugfs: Do not return '0' if there is nothing to return 2022-03-22 10:08:20 +00:00
intel_gt_pm_irq.c drm/i915/mtl: Use primary GT's irq lock for media GT 2022-09-12 15:23:12 +03:00
intel_gt_pm_irq.h
intel_gt_pm.c drm/i915: Refactor confusing __intel_gt_reset() 2024-04-24 18:48:31 +02:00
intel_gt_pm.h drm/i915: use NULL for zero wakeref_t instead of plain integer 0 2024-10-04 10:29:24 +03:00
intel_gt_print.h drm/i915/gt: More use of GT specific print helpers 2023-10-10 15:40:24 -07:00
intel_gt_regs.h drm/i915: Disable compression tricks on JSL 2024-10-09 19:04:24 +03:00
intel_gt_requests.c drm/i915: add a dedicated workqueue inside drm_i915_private 2023-06-10 06:33:11 +03: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_sysfs_pm.c Merge tag 'drm-intel-gt-next-2024-04-26' of https://anongit.freedesktop.org/git/drm/drm-intel into drm-next 2024-04-30 14:40:43 +10:00
intel_gt_sysfs_pm.h drm/i915/gt: Create per-tile RC6 sysfs interface 2022-03-21 08:37:42 +00:00
intel_gt_sysfs.c drm/i915: Make kobj_type structures constant 2023-02-17 11:50:28 +02:00
intel_gt_sysfs.h drm/i915: Fix CFI violations in gt_sysfs 2022-10-27 19:14:53 +02:00
intel_gt_types.h drm/i915/gt: Mark the GT as dead when mmio is unreliable 2024-08-09 12:51:17 +01:00
intel_gt.c drm for 6.13-rc1 2024-11-21 14:56:17 -08:00
intel_gt.h drm/i915/gt: remove stray declaration of intel_gt_release_all() 2024-08-17 11:24:46 +02:00
intel_gtt.c drm/i915: Update IP_VER(12, 50) 2024-03-22 14:14:52 -07:00
intel_gtt.h drm/i915/dpt: Evict all DPT VMAs on suspend 2024-11-28 17:33:44 +02:00
intel_hwconfig.h drm/i915/guc: Add fetch of hwconfig blob 2022-03-17 19:51:48 -07:00
intel_llc_types.h
intel_llc.c drm/i915/slpc: Let's fix the PCODE min freq table setup for SLPC 2022-09-06 14:51:43 -04:00
intel_llc.h
intel_lrc_reg.h drm/i915/gt: Move engine registers to their own header 2022-01-11 14:03:25 -08:00
intel_lrc.c drm/i915/pxp: Add missing tag for Wa_14019159160 2024-10-18 11:00:33 -04:00
intel_lrc.h drm/i915/perf: Fix OA filtering logic for GuC mode 2022-10-27 12:35:56 -07:00
intel_migrate_types.h drm/i915/gt: Pipelined page migration 2021-06-17 14:23:05 +01:00
intel_migrate.c drm/i915: Update IP_VER(12, 50) 2024-03-22 14:14:52 -07:00
intel_migrate.h drm/i915: use pat_index instead of cache_level 2023-05-11 17:38:55 +02:00
intel_mocs.c drm/i915: Drop dead code for pvc 2024-03-22 14:14:56 -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: Invalidate the TLBs on each GT 2023-08-02 15:56:44 +02:00
intel_rc6_types.h drm/i915/mtl: Synchronize i915/BIOS on C6 enabling 2023-03-24 08:43:32 -07:00
intel_rc6.c drm/i915/dg1: Fix power gate sequence. 2024-12-20 13:49:40 -05:00
intel_rc6.h drm/i915/mtl: Synchronize i915/BIOS on C6 enabling 2023-03-24 08:43:32 -07:00
intel_region_lmem.c drm/i915: Rename the DSM/GSM registers 2024-02-07 01:59:01 +02:00
intel_region_lmem.h drm/i915: Kill the fake lmem support 2022-02-18 22:31:46 -08:00
intel_renderstate.c drm/i915: Wrap all access to i915_vma.node.start|size 2022-12-06 10:52:42 +01: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 drm/i915/gt: Rename dev_priv to i915 for private data naming consistency 2023-02-27 23:22:54 +01:00
intel_reset.c Merge tag 'drm-intel-gt-next-2025-01-10' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-01-13 08:05:00 +10:00
intel_reset.h drm/i915: Refactor confusing __intel_gt_reset() 2024-04-24 18:48:31 +02:00
intel_ring_submission.c drm/i915/gt: Use ENGINE_TRACE for tracing. 2024-12-20 11:42:26 +01:00
intel_ring_types.h
intel_ring.c drm/i915: Remove unused intel_ring_cacheline_align 2024-12-30 01:31:56 +01:00
intel_ring.h drm/i915: Remove unused intel_ring_cacheline_align 2024-12-30 01:31:56 +01:00
intel_rps_types.h drm/i915/gt: Rename dev_priv to i915 for private data naming consistency 2023-02-27 23:22:54 +01:00
intel_rps.c drm/i915: convert fsb_freq and mem_freq to kHz 2024-06-17 11:54:31 +03:00
intel_rps.h drm/i915: Add helpers for managing rps thresholds 2023-07-19 11:28:28 +01:00
intel_sa_media.c drm/i915/uncore: add intel_uncore_regs() helper 2023-07-04 17:12:48 +03:00
intel_sa_media.h drm/i915/xelpmp: Expose media as another GT 2022-09-12 15:23:12 +03:00
intel_sseu_debugfs.c drm/i915/sseu: Disassociate internal subslice mask representation from uapi 2022-06-02 07:20:59 -07:00
intel_sseu_debugfs.h
intel_sseu.c drm/i915: Drop dead code for pvc 2024-03-22 14:14:56 -07:00
intel_sseu.h drm/i915/sseu: fix max_subslices array-index-out-of-bounds access 2023-03-13 11:38:05 +02:00
intel_timeline_types.h
intel_timeline.c drm/i915: don't include drm_cache.h in i915_drv.h 2022-02-14 13:19:37 +02:00
intel_timeline.h
intel_tlb.c drm/i915/gt: add a macro for mock gt wakeref special value and use it 2024-09-30 17:54:11 +03:00
intel_tlb.h drm/i915/gt: Move TLB invalidation to its own file 2023-08-02 15:40:11 +02:00
intel_wopcm.c drm/i915/mtl: Handle wopcm per-GT and limit calculations. 2022-11-14 10:11:47 -08:00
intel_wopcm.h drm/i915/mtl: Handle wopcm per-GT and limit calculations. 2022-11-14 10:11:47 -08:00
intel_workarounds_types.h drm/i915: Partial abandonment of legacy DRM logging macros 2022-11-10 12:35:46 +00:00
intel_workarounds.c drm/i915: remove all IS_<PLATFORM>_GT<N>() macros 2024-10-24 13:14:37 +03: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: Don't use __func__ as prefix for drm_dbg_printer 2024-06-06 14:46:15 -04:00
selftest_engine_cs.c drm/i915: Track gt pm wakerefs 2023-11-20 12:36:56 +01:00
selftest_engine_heartbeat.c drm/i915/gt: Delete the live_hearbeat_fast selftest 2024-06-06 03:46:13 +02: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/gt: Use gt_err for GT info 2023-05-03 12:56:10 +02: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 treewide: Introduce kthread_run_worker[_on_cpu]() 2025-01-08 18:15:03 +01:00
selftest_gt_pm.c drm/i915: Track gt pm wakerefs 2023-11-20 12:36:56 +01:00
selftest_hangcheck.c treewide: Introduce kthread_run_worker[_on_cpu]() 2025-01-08 18:15:03 +01:00
selftest_llc.c drm/i915: remove unnecessary intel_pm.h includes 2023-03-06 18:26:30 +02:00
selftest_llc.h
selftest_lrc.c drm/i915/gt: add selftest to exercise WABB 2023-10-31 13:06:21 +01:00
selftest_migrate.c drm/i915/gt: Prevent uninitialized pointer reads 2025-01-08 08:54:57 -05:00
selftest_mocs.c drm/i915: use direct alias for i915 in requests 2023-07-24 17:24:35 +02:00
selftest_rc6.c drm/i915/selftests: Implement frequency logging for energy reading validation 2024-12-19 11:06:03 +01:00
selftest_rc6.h
selftest_reset.c drm/i915: Refactor confusing __intel_gt_reset() 2024-04-24 18:48:31 +02:00
selftest_ring_submission.c drm/i915: Wrap all access to i915_vma.node.start|size 2022-12-06 10:52:42 +01:00
selftest_ring.c
selftest_rps.c drm/i915/selftests: Add delay to stabilize frequency in live_rps_power 2024-12-06 20:15:07 +05:30
selftest_rps.h
selftest_slpc.c treewide: Introduce kthread_run_worker[_on_cpu]() 2025-01-08 18:15:03 +01:00
selftest_timeline.c drm/i915: use direct alias for i915 in requests 2023-07-24 17:24:35 +02:00
selftest_tlb.c drm/i915: Use struct resource for memory region IO as well 2024-02-07 01:58:40 +02:00
selftest_workarounds.c drm/i915/selftest: use igt_vma_move_to_active_unlocked if possible 2023-01-09 14:23:52 +01:00
shmem_utils.c fs: port files to file_ref 2024-10-30 09:57:43 +01:00
shmem_utils.h drm/i915/gt: Add helper for shmem copy to iosys_map 2022-02-25 15:23:18 -08:00
st_shmem_utils.c
sysfs_engines.c drm/i915/gt: Continue creating engine sysfs files even after a failure 2024-08-24 00:28:55 +02:00
sysfs_engines.h