Deadlock in i915_pmu_event_add
Getting random deadlocks when using mangohud's full view. Backtrace:
#5 [ffffb74f06513980] native_queued_spin_lock_slowpath at ffffffffbb1633ae
#6 [ffffb74f065139a0] do_raw_spin_lock at ffffffffba1c1eab
#7 [ffffb74f065139b0] raw_spin_rq_lock_nested at ffffffffba166d60
#8 [ffffb74f065139d0] try_to_wake_up at ffffffffba175ac4
#9 [ffffb74f06513a28] kick_pool at ffffffffba14014c
#10 [ffffb74f06513a48] __queue_work at ffffffffba144d24
#11 [ffffb74f06513a88] mod_delayed_work_on at ffffffffba145905
#12 [ffffb74f06513ac8] __i915_pmu_event_read at ffffffffc0682611 [i915]
#13 [ffffb74f06513b18] i915_pmu_enable at ffffffffc0682853 [i915]
#14 [ffffb74f06513b50] i915_pmu_event_add at ffffffffc068297e [i915]
#15 [ffffb74f06513b60] event_sched_in at ffffffffba38f1dd
#16 [ffffb74f06513b88] merge_sched_in at ffffffffba3940d3
#17 [ffffb74f06513bc0] visit_groups_merge.constprop.0 at ffffffffba39435e
#18 [ffffb74f06513c18] ctx_groups_sched_in at ffffffffba394723
#19 [ffffb74f06513c58] __perf_event_task_sched_in at ffffffffba394a9f
#20 [ffffb74f06513cb0] finish_task_switch at ffffffffba166222
#21 [ffffb74f06513ce8] __schedule at ffffffffbb15695d
#22 [ffffb74f06513da0] schedule at ffffffffbb157d35
#23 [ffffb74f06513db8] pipe_read at ffffffffba4f2a74
#24 [ffffb74f06513e48] vfs_read at ffffffffba4e48e7
#25 [ffffb74f06513ee8] ksys_read at ffffffffba4e54e4
#26 [ffffb74f06513f20] do_syscall_64 at ffffffffbb140471
#27 [ffffb74f06513f50] entry_SYSCALL_64_after_hwframe at ffffffffbb20012a
It looks like frame 21 __schedule
is holding the rq lock when try_to_wake_up
attempts to acquire it in ttwu_queue
. The path from __i915_pmu_event_read
to mod_delayed_work_on
seems to be __i915_pmu_event_read
→ get_r6
→ intel_gt_pm_put_async
→ intel_wakeref_put_async
→ __intel_wakeref_put
→ __intel_wakeref_put_last
→ mod_delayed_work
→ mod_delayed_work_on
.
> uname -srvo
Linux 6.7.9-200.lockdep.fc39.x86_64 #1 SMP PREEMPT_DYNAMIC Fri Mar 15 01:35:20 CDT 2024 GNU/Linux
> lspci -vnn -d ":*:0300"
00:02.0 VGA compatible controller [0300]: Intel Corporation TigerLake-LP GT2 [Iris Xe Graphics] [8086:9a49] (rev 01) (prog-if 00 [VGA controller])
Subsystem: Lenovo Device [17aa:22d5]
Flags: bus master, fast devsel, latency 0, IRQ 138, IOMMU group 2
Memory at 603c000000 (64-bit, non-prefetchable) [size=16M]
Memory at 4000000000 (64-bit, prefetchable) [size=256M]
I/O ports at 3000 [size=64]
Expansion ROM at 000c0000 [virtual] [disabled] [size=128K]
Capabilities: <access denied>
Kernel driver in use: i915
Kernel modules: i915
Machine: Lenovo X1 Carbon Gen 9