scx_softlockup(9)
π scx_softlockup(9) π
Okay bestie, welcome to the Kernel API Manual page for scx_softlockup β the sched_ext softlockup handler. This is highkey emergency-scheduler content, so hydrate and pay attention. π
π NAME π
scx_softlockup β sched_ext softlockup handler. Thatβs the whole vibe of the name section, periodt. β¨
β¨ SYNOPSIS β¨
void scx_softlockup (u32 dur_s );
πΈ ARGUMENTS πΈ
dur_sβ the number of seconds of CPU stuck due to soft lockup. Basically the stuck-o-meter reading, ngl. π°οΈ
π¦ DESCRIPTION π¦
On some multi-socket setups (e.g. 2x Intel 8480c), the BPF scheduler can live-lock the system by making many CPUs target the same DSQ to the point where soft-lockup detection triggers. Not me learning that many CPUs can all pile onto the same DSQ and justβ¦ create chaos. π
This function is called from the soft-lockup watchdog when the triggering point is close, and it tries to unjam the system and abort the BPF scheduler. Itβs literally the βbestie, we need to get out of this situationβ function. π₯
π SEE ALSO π
The kernel file is ./kernel/sched/ext/ext.c β thatβs the home base π β and hereβs the full friend group, no cap:
scx_is_descendant(9),rq_is_open(9),scx_fill_cmask_scratch(9),scx_call_op_set_cpumask(9)nldsq_next_task(9),nldsq_cursor_next_task(9),nldsq_cursor_lost_task(9),scx_task_iter_start(9)scx_task_iter_unlock(9),scx_task_iter_relock(9),scx_task_iter_stop(9),scx_task_iter_next(9)scx_task_iter_next_locked(9),scx_dump_event(9),wait_ops_state(9),scx_cpu_valid(9)schedule_deferred(9),schedule_deferred_locked(9),dsq_insert_head(9),set_task_slice_keep_oob(9)scx_task_slice_ended(9),move_remote_task_to_local_dsq(9),unlink_dsq_and_switch_rq_lock(9),move_task_between_dsqs(9)dispatch_to_local_dsq(9),finish_dispatch(9),scx_prio_less(9),__scx_init_task(9)task_dead_and_done(9),scx_tg_sched(9),scx_tg_knob_sched(9),handle_lockup(9)scx_rcu_cpu_stall(9),scx_hardlockup(9),unbypass_renotify_idle(9),scx_bypass(9)scx_propagate_exit_irq_workfn(9),scx_flush_disable_work(9),print_scx_info(9),scx_bpf_dsq_insert___v2(9)__scx_bpf_dsq_insert_vtime(9),scx_bpf_dispatch_nr_slots(9),scx_bpf_dispatch_cancel(9),scx_bpf_dsq_move_to_local___v2(9)scx_bpf_dsq_move_set_slice(9),scx_bpf_dsq_move_set_vtime(9),scx_bpf_dsq_move(9),scx_bpf_dsq_move_vtime(9)scx_bpf_reenqueue_local(9),scx_bpf_create_dsq(9),scx_bpf_task_set_slice(9),scx_bpf_task_set_dsq_vtime(9)scx_bpf_kick_cpu(9),scx_bpf_kick_cid(9),scx_bpf_dsq_nr_queued(9),scx_bpf_destroy_dsq(9)bpf_iter_scx_dsq_new(9),bpf_iter_scx_dsq_next(9),bpf_iter_scx_dsq_destroy(9),scx_bpf_dsq_peek(9)scx_bpf_dsq_reenq(9),scx_bpf_reenqueue_local___v2(9),scx_bpf_exit_bstr(9),scx_bpf_error_bstr(9)scx_bpf_dump_bstr(9),scx_bpf_cpuperf_cap(9),scx_bpf_cidperf_cap(9),scx_bpf_cpuperf_cur(9)scx_bpf_cidperf_cur(9),scx_bpf_cpuperf_set(9),scx_bpf_cidperf_set(9),scx_bpf_nr_node_ids(9)scx_bpf_nr_cpu_ids(9),scx_bpf_nr_cids(9),scx_bpf_nr_online_cids(9),scx_bpf_online_cmask(9)scx_bpf_this_cid(9),scx_bpf_get_possible_cpumask(9),scx_bpf_get_online_cpumask(9),scx_bpf_put_cpumask(9)scx_bpf_task_running(9),scx_bpf_task_cpu(9),scx_bpf_task_cid(9),scx_bpf_locked_rq(9)scx_bpf_cpu_curr(9),scx_bpf_cid_curr(9),scx_bpf_tid_to_task(9),scx_bpf_now(9)scx_bpf_events(9),scx_bpf_task_cgroup(9)
Signed, sealed, delivered by ./kernel/sched/ext β October 2026 β scx_softlockup(9) π
π¦ where this page comes from
- nixpkgs unstable: linux-manual 7.3.1
- π girlified by deepseek-ai/DeepSeek-V4.1-Flash-1017 on : a language model's rewrite of the original, under its terms