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
Junxiao Chang 8cadce97bf drm/i915/gsc: mei interrupt top half should be in irq disabled context
MEI GSC interrupt comes from i915. It has top half and bottom half.
Top half is called from i915 interrupt handler. It should be in
irq disabled context.

With RT kernel, by default i915 IRQ handler is in threaded IRQ. MEI GSC
top half might be in threaded IRQ context. generic_handle_irq_safe API
could be called from either IRQ or process context, it disables local
IRQ then calls MEI GSC interrupt top half.

This change fixes A380/A770 GPU boot hang issue with RT kernel.

Fixes: 1e3dc1d862 ("drm/i915/gsc: add gsc as a mei auxiliary device")
Tested-by: Furong Zhou <furong.zhou@intel.com>
Suggested-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Acked-by: Sebastian Andrzej Siewior <bigeasy@linutronix.de>
Signed-off-by: Junxiao Chang <junxiao.chang@intel.com>
Link: https://lore.kernel.org/r/20250425151108.643649-1-junxiao.chang@intel.com
Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
(cherry picked from commit dccf655f69)
Signed-off-by: Joonas Lahtinen <joonas.lahtinen@linux.intel.com>
2025-07-01 08:10:46 +03:00
..
selftests
shaders drm/i915/gt: fix typos in i915/gt files. 2025-01-23 05:48:22 -05:00
uc drm/i915/guc: Handle race condition where wakeref count drops below 0 2025-06-02 12:19:14 +03:00
gen2_engine_cs.c drm/i915/gt: fix typos in i915/gt files. 2025-01-23 05:48:22 -05: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 Merge tag 'drm-intel-gt-next-2025-03-12' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-03-25 08:21:07 +10: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 drm/i915/gt: fix typos in i915/gt files. 2025-01-23 05:48:22 -05: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 treewide: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02: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 Merge tag 'drm-intel-gt-next-2025-02-26' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-03-13 07:54:41 +10:00
intel_ggtt_fencing.h
intel_ggtt_gmch.c drm/i915/ggtt: Add intel_ggtt_read_entry() 2025-04-02 02:17:30 +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/ggtt: Add intel_ggtt_read_entry() 2025-04-02 02:17:30 +03:00
intel_gpu_commands.h drm/i915/gt: Add Wa_14019789679 2024-08-05 22:33:39 +01:00
intel_gsc.c drm/i915/gsc: mei interrupt top half should be in irq disabled context 2025-07-01 08:10:46 +03: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 REG_BIT() & co. for gen9+ timestamp freq registers 2025-03-04 15:39:37 +01: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/gt: fix typos in i915/gt files. 2025-01-23 05:48:22 -05:00
intel_gt_irq.h
intel_gt_mcr.c Merge tag 'drm-intel-gt-next-2025-03-12' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-03-25 08:21:07 +10: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/reset: add intel_gt_gpu_reset_clobbers_display() helper 2025-03-05 12:48:22 +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: Reoder gen9+ timestamp freq register bits 2025-03-04 15:39:38 +01: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 drm/i915/slpc: Add sysfs for SLPC power profiles 2025-02-04 18:10:56 -05: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/i915: Extract gen8_report_fault() 2025-03-04 15:39:33 +01: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/gt: Remove trailing blank lines 2025-03-19 02:40:49 +01:00
intel_gtt.h drm/i915/ggtt: Add intel_ggtt_read_entry() 2025-04-02 02:17:30 +03: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/gt: Remove trailing blank lines 2025-03-19 02:40:49 +01: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/gt: fix typos in i915/gt files. 2025-01-23 05:48:22 -05:00
intel_migrate.h drm/i915: use pat_index instead of cache_level 2023-05-11 17:38:55 +02:00
intel_mocs.c Merge tag 'drm-intel-gt-next-2025-05-08-1' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-05-09 11:39:27 +10: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: Disable RPG during live selftest 2025-04-07 11:00:07 +03: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/reset: remove I915_RESET_MODESET flag 2025-03-05 12:48:22 +02:00
intel_reset.c Merge tag 'drm-intel-gt-next-2025-02-26' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-03-13 07:54:41 +10:00
intel_reset.h drm/i915/reset: add intel_gt_gpu_reset_clobbers_display() helper 2025-03-05 12:48:22 +02:00
intel_ring_submission.c drm/i915/gt: Fix timeline left held on VMA alloc error 2025-07-01 08:10:42 +03: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/rps: fix stale reference to i915->irq_lock 2025-05-07 15:44:19 +03:00
intel_rps.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02: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/gt: fix typos in i915/gt files. 2025-01-23 05:48:22 -05: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 Merge tag 'drm-intel-gt-next-2025-03-12' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-03-25 08:21:07 +10: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/gt: Fix SPDX license format 2025-03-19 02:40:19 +01: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 Merge tag 'drm-intel-gt-next-2025-05-08-1' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-05-09 11:39:27 +10: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 treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02: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: Switch/rename to timer_delete[_sync]() 2025-04-05 10:30:12 +02:00
selftest_gt_pm.c drm/i915: Track gt pm wakerefs 2023-11-20 12:36:56 +01:00
selftest_hangcheck.c Merge drm/drm-next into drm-intel-next 2025-02-05 19:12:37 +02: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 Merge tag 'drm-intel-gt-next-2025-05-08-1' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-05-09 11:39:27 +10:00
selftest_migrate.c treewide, timers: Rename from_timer() to timer_container_of() 2025-06-08 09:07:37 +02:00
selftest_mocs.c drm/i915: use direct alias for i915 in requests 2023-07-24 17:24:35 +02:00
selftest_rc6.c Merge tag 'drm-intel-gt-next-2025-05-08-1' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-05-09 11:39:27 +10: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 Merge tag 'drm-intel-gt-next-2025-02-26' of https://gitlab.freedesktop.org/drm/i915/kernel into drm-next 2025-03-13 07:54:41 +10:00
selftest_rps.h
selftest_slpc.c Merge drm/drm-next into drm-intel-gt-next 2025-02-05 09:29:14 +00: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/gt: Use proper sleeping functions for timeouts shorter than 20ms 2025-03-19 02:41:17 +01: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 drm/i915/gt: Replace kmap with its safer kmap_local_page counterpart 2025-02-17 15:02: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