[PATCH 3/5] sched_ext: Report NMI kicks with scx_error()
Tejun Heo <[email protected]> Fri, 24 Jul 2026 14:50:17 -1000
| Newsgroups | dev.linux.lists.sched-ext,org.kernel.vger.linux-kernel |
|---|---|
| Message-ID | <[email protected]> |
The per-cpu kick lists are protected by IRQ masking which doesn't stop NMIs, so scx_bpf_kick_cpu() from NMI silently drops the kick after a one-time warning. A dropped kick can leave a CPU idle when the scheduler believes it was woken, which is a correctness problem for the scheduler even if the kernel is fine. Now that scx_error() works from NMI, abort the scheduler instead so that the bug is surfaced deterministically. The warned_nmi_kick tracking is no longer needed. Signed-off-by: Tejun Heo <[email protected]> --- kernel/sched/ext/ext.c | 6 +----- kernel/sched/ext/internal.h | 1 - 2 files changed, 1 insertion(+), 6 deletions(-) diff --git a/kernel/sched/ext/ext.c b/kernel/sched/ext/ext.c index 29ca5f5ec30b..4338dc6a3f3a 100644 --- a/kernel/sched/ext/ext.c +++ b/kernel/sched/ext/ext.c @@ -9208,11 +9208,7 @@ void scx_kick_cpu(struct scx_sched *sch, s32 cpu, u64 flags) * not mask NMIs, so kicking from NMI could corrupt it and is unsupported. */ if (unlikely(in_nmi())) { - if (!sch->warned_nmi_kick) { - sch->warned_nmi_kick = true; - pr_warn("sched_ext: %s: scx_bpf_kick_cpu() from NMI ignored\n", - sch->ops.name); - } + scx_error(sch, "scx_bpf_kick_cpu() called from NMI"); return; } diff --git a/kernel/sched/ext/internal.h b/kernel/sched/ext/internal.h index a0659f74b065..b141f0104b44 100644 --- a/kernel/sched/ext/internal.h +++ b/kernel/sched/ext/internal.h @@ -1546,7 +1546,6 @@ struct scx_sched { */ bool warned_zero_slice:1; bool warned_unassoc_progs:1; - bool warned_nmi_kick:1; struct list_head all; -- 2.55.0