diff options
| author | Emil Tsalapatis <[email protected]> | 2025-11-12 18:42:02 +0000 |
|---|---|---|
| committer | Tejun Heo <[email protected]> | 2025-11-12 18:42:02 +0000 |
| commit | c87488a12393a23f8a1b9850b989b386c58cac3f (patch) | |
| tree | 5e3b624b90ffe8d9ca9ba3907bb92193488e4617 /lib/mpi/mpi-mod.c | |
| parent | sched_ext: Fix unsafe locking in the scx_dump_state() (diff) | |
| download | kernel-c87488a12393a23f8a1b9850b989b386c58cac3f.tar.gz kernel-c87488a12393a23f8a1b9850b989b386c58cac3f.zip | |
sched/ext: convert scx_tasks_lock to raw spinlock
Update scx_task_locks so that it's safe to lock/unlock in a
non-sleepable context in PREEMPT_RT kernels. scx_task_locks is
(non-raw) spinlock used to protect the list of tasks under SCX.
This list is updated during from finish_task_switch(), which
cannot sleep. Regular spinlocks can be locked in such a context
in non-RT kernels, but are sleepable under when CONFIG_PREEMPT_RT=y.
Convert scx_task_locks into a raw spinlock, which is not sleepable
even on RT kernels.
Sample backtrace:
<TASK>
dump_stack_lvl+0x83/0xa0
__might_resched+0x14a/0x200
rt_spin_lock+0x61/0x1c0
? sched_ext_dead+0x2d/0xf0
? lock_release+0xc6/0x280
sched_ext_dead+0x2d/0xf0
? srso_alias_return_thunk+0x5/0xfbef5
finish_task_switch.isra.0+0x254/0x360
__schedule+0x584/0x11d0
? srso_alias_return_thunk+0x5/0xfbef5
? srso_alias_return_thunk+0x5/0xfbef5
? tick_nohz_idle_exit+0x7e/0x120
schedule_idle+0x23/0x40
cpu_startup_entry+0x29/0x30
start_secondary+0xf8/0x100
common_startup_64+0x13e/0x148
</TASK>
Signed-off-by: Emil Tsalapatis <[email protected]>
Signed-off-by: Tejun Heo <[email protected]>
Diffstat (limited to 'lib/mpi/mpi-mod.c')
0 files changed, 0 insertions, 0 deletions
