[PATCHSET sched_ext/for-7.4-fixes] sched_ext: Fix proxy execution balance callbacks

From: Andrea Righi

Date: Tue Oct 20 2026 - 04:50:34 EST


This series addresses the three follow-ups you reported after applying
"sched_ext: Queue the kick_sync wait from set_next_task_scx()" [1].

The first patch prevents queue_balance_callback() from requeueing a
callback that is already the sole list entry. With proxy execution,
SNT_REPICK followed by SNT_PICK can otherwise queue the kick_sync
callback twice, linking it to itself and running the wait twice.

The second patch routes dispatch-time deferred actions through irq_work
when proxy execution is enabled. Proxy resolution can zap balance
callbacks and then select idle or another scheduling class, leaving no
SCX dispatch to restore the discarded deferred callback.

The third patch removes the now-unreachable foreign CPU check from the
kick_sync wait callback.

[1] https://lore.kernel.org/r/08cac02c604dd73ef96fc92eb29d692b@xxxxxxxxxx

Andrea Righi (3):
sched/core: Avoid requeueing a singleton balance callback
sched_ext: Use irq_work for deferred actions with proxy execution
sched_ext: Remove the foreign CPU check from the kick_sync wait

kernel/sched/ext/ext.c | 18 +++++-------------
kernel/sched/sched.h | 3 ++-
2 files changed, 7 insertions(+), 14 deletions(-)