* [GIT PULL] sched_ext: Changes for v7.4
@ 2026-10-19 16:47 Tejun Heo
0 siblings, 0 replies; only message in thread
From: Tejun Heo @ 2026-10-19 16:47 UTC (permalink / raw)
To: Linus Torvalds
Cc: David Vernet, Andrea Righi, Changwoo Min, Emil Tsalapatis,
David Dai, sched-ext, linux-kernel
Hello,
The following changes since commit 2935062be77113c1c4565ca9d0c72180449aafee:
sched_ext: Wait for SCX_OPSS_DISPATCHING before moving tasks off DSQs (2026-10-13 09:55:19 -1000)
are available in the Git repository at:
https://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext.git tags/sched_ext-for-7.4
for you to fetch changes up to 1f5dde349ac2fca1f119ae8de3f0d2f1c2a8d338:
sched_ext: Drop the locks periodically while walking a user DSQ for re-enqueue (2026-10-17 20:18:02 -1000)
----------------------------------------------------------------
sched_ext: Changes for v7.4
This depends on sched/core, which carries the sched_ext hooks for proxy
execution, and should be pulled after it. The shortlog and diffstat are
against v7.3 with sched/core merged.
for-7.3-fixes was merged into for-7.4 six times during the cycle, once to
receive a change the CID cluster work built on and otherwise to resolve
conflicts with development here, mostly the proxy execution work.
Five fixes went into for-7.3-fixes in the days before v7.3 was cut and
missed the release. They come in through this pull, three of them marked for
stable: balance callbacks left queued across a pick retry, a use-after-free
on a CPU going offline, and bypass bugs that could stall a task.
- Proxy execution can now be enabled together with sched_ext. A BPF
scheduler can opt in to receive mutex-blocked tasks that donate their
scheduling context to the lock owner and place them itself.
- Lazy preemption: a BPF scheduler can preempt or kick a CPU lazily,
deferring the switch to the next return to user space or tick, as the fair
class can.
- Sub-schedulers: a parent now learns which child runs on each CPU it
delegated and when a cap change takes effect. A detaching child loses its
caps before the parent restores the CPUs.
- New kfuncs re-enqueue single tasks from a dispatch queue iteration and
report a cgroup's CPU count and a CID's NUMA node. The CID topology now
includes clusters.
- Hot path optimizations: dispatch queue and task lookups compare keys
inline, remote task moves no longer take a dispatch queue lock twice, and
sub-scheduler hooks cost nothing without sub-schedulers.
- Kfuncs callable from tracing programs are hardened against NMI and IRQ
nesting, which could hard-lock the CPU or pick a wrong idle CPU.
- Built-in dispatch queues no longer allocate per-CPU state that grew with
the square of the CPU count.
- Header syncs with the scx repo, a BTF workaround for pahole 1.32, and
selftest fixes and coverage.
----------------------------------------------------------------
Andrea Righi (20):
sched_ext: Add lazy preemption support
selftests/sched_ext: Add lazy preemption tests
sched_ext: Add a CID NUMA node lookup kfunc
sched_ext: cid: Represent clusters explicitly
sched_ext: Block proxy donors before taking control
sched_ext: Fix ops.running/stopping() pairing for proxy-exec donors
sched_ext: Move reject DSQ draining into core
sched_ext: Generalize the reject DSQ reenqueue path
sched_ext: Handle proxy-exec races in remote DSQ transfers
sched_ext: Split curr|donor references properly
sched_ext: Track proxy execution for NOHZ_FULL
sched_ext: Delegate proxy donor admission to BPF schedulers
sched_ext: Add selftest for blocked donor admission
sched_ext: scx_qmap: Add proxy execution support
sched: Allow enabling proxy exec with sched_ext
sched_ext: Introduce scx_bpf_cgroup_nr_cpus()
selftests/sched_ext: Test scx_bpf_cgroup_nr_cpus()
sched_ext: Keep proxy donors with slice left on the local DSQ
sched_ext: Don't leave balance callbacks queued across a pick retry
sched_ext: Don't queue balance callbacks from a core-sched pick
Cheng-Yang Chou (4):
tools/sched_ext: Drop the no-op -rdynamic from CFLAGS
selftests/sched_ext: Drop -rdynamic and stop clobbering LDFLAGS
sched_ext: Merge adjacent ifdefs in ext.h
selftests/sched_ext: Fix rt_stall runner abort
Fuyu Zhao (1):
tools/sched_ext: Add SCX_OPS_OPEN_OPTS for schedulers using open opts
Hemanth Selam (2):
sched_ext: Fix typo "upto" in comments
tools/sched_ext: Fix repeated word 'be' in comment
Samuele Mariotti (1):
selftests/sched_ext: Fix build error in dequeue_remote selftest
Tao Cui (9):
sched_ext: Rename tg->scx.idle to tg->scx.sched_idle
sched_ext: Document the rolling-cursor requirement for dsq_vtime
sched_ext/scx_flatcg: Make cgv_node_less() wraparound-safe
selftests/sched_ext: Fix reload_loop error-path use-after-free
sched_ext: Add SCX_ECODE_RSN_CGROUP_OFFLINE to user_exit_info.h
selftests/sched_ext: Fail loudly when EXIT_KIND is missing from BTF
selftests/sched_ext: Add SCX_ASSERT_ALIVE and adopt it
selftests/sched_ext: Bound exit waits
selftests/sched_ext: Report reload_loop attach failures
Tejun Heo (23):
sched_ext: Merge branch 'for-7.3-fixes' into for-7.4
sched_ext: Merge branch 'sched/core' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip into for-7.4
sched_ext: Work around pahole 1.32 dropping scx_bpf_task_set_lazy_resched() from BTF
sched_ext: Merge branch 'for-7.3-fixes' into for-7.4
sched_ext: Sync common and compat headers from the scx repo
sched_ext: Sync tools autogen enum headers from the scx repo
sched_ext: Clear a sub-scheduler's caps before ops.sub_detach()
sched_ext: Add ops.sub_cid_sched_updated() to report the sched running on a cid
sched_ext: scx_qmap: Size the cid range buffer for large machines
sched_ext: scx_qmap: Show actual cid use per participant
sched_ext: Add ops.sub_child_ecaps_updated() to report a child's effective cap changes
sched_ext: scx_qmap: Reset a child's cpuperf targets once its PERF revoke takes effect
sched_ext: Merge branch 'for-7.3-fixes' into for-7.4
sched_ext: Merge branch 'for-7.3-fixes' into for-7.4
sched_ext: Fix use-after-free of a local reenq node left on an inactive cpu
sched_ext: Fix the running task keeping its protection into bypass
sched_ext: Fix a bypassed task stalling on a cpu its scheduler has no caps on
sched_ext: Merge branch 'for-7.3-fixes' into for-7.4
sched_ext: Merge branch 'for-7.3-fixes' into for-7.4
sched_ext: Factor out the rq lock switch of scx_dsq_move()
sched_ext: Add scx_bpf_dsq_reenq_task() to re-enqueue single tasks from a DSQ iteration
sched_ext: scx_qmap: Also re-enqueue stranded tasks with scx_bpf_dsq_reenq_task()
sched_ext: Drop the locks periodically while walking a user DSQ for re-enqueue
Tianyi Chen (4):
selftests/sched_ext: Fail interrupted test runs
selftests/sched_ext: Handle CPU hotplug write failures
selftests/sched_ext: Cover duplicate DSQ creation and ID reuse
selftests/sched_ext: Validate select_cpu_and mask constraints
Usama Arif (8):
sched_ext: Specialize the DSQ hashtable compare
sched_ext: Specialize the TID hashtable compare
sched_ext: Specialize the scheduler hashtable compare
sched_ext: Avoid relocking DSQ during remote consumption
sched_ext: Avoid relocking DSQ during remote DSQ moves
sched_ext: Update scx_dispatch_dequeue() comments
sched_ext: Place dsq_vtime next to dsq_priq
sched_ext: Test scx_has_subs() inline before calling sub-sched hooks
Wanwu Li (3):
sched_ext: Reject NMI calls to lock-taking kfuncs
sched_ext: Make scx_locked_rq() return NULL from NMI
sched_ext: Protect the idle-search scratch nodemask with irqsave
fangqiurong (1):
sched_ext: Skip per-CPU data allocation for built-in DSQs
Documentation/scheduler/sched-ext.rst | 13 +
include/linux/sched/ext.h | 39 +-
init/Kconfig | 2 -
kernel/sched/ext/cid.c | 67 +-
kernel/sched/ext/cid.h | 11 +-
kernel/sched/ext/ext.c | 1271 ++++++++++++++++----
kernel/sched/ext/ext.h | 32 +-
kernel/sched/ext/idle.c | 14 +-
kernel/sched/ext/internal.h | 196 ++-
kernel/sched/ext/sub.c | 387 ++++--
kernel/sched/ext/sub.h | 50 +-
kernel/sched/ext/types.h | 28 +-
kernel/sched/sched.h | 11 +-
kernel/sched/syscalls.c | 2 +
tools/sched_ext/Makefile | 2 +-
tools/sched_ext/include/scx/cid.bpf.h | 689 +++++++++--
tools/sched_ext/include/scx/common.bpf.h | 95 +-
tools/sched_ext/include/scx/compat.bpf.h | 90 ++
tools/sched_ext/include/scx/compat.h | 28 +-
tools/sched_ext/include/scx/const-defs.h | 20 +
tools/sched_ext/include/scx/enum_defs.autogen.h | 10 +
tools/sched_ext/include/scx/enums.autogen.bpf.h | 21 +-
tools/sched_ext/include/scx/enums.autogen.h | 22 +-
tools/sched_ext/include/scx/enums_abi.autogen.h | 12 +-
tools/sched_ext/include/scx/features.bpf.h | 29 +
tools/sched_ext/include/scx/user_exit_info.h | 1 +
tools/sched_ext/scx_flatcg.bpf.c | 2 +-
tools/sched_ext/scx_qmap.bpf.c | 269 ++++-
tools/sched_ext/scx_qmap.c | 60 +-
tools/sched_ext/scx_qmap.h | 13 +
tools/testing/selftests/sched_ext/.gitignore | 4 +
tools/testing/selftests/sched_ext/Makefile | 13 +-
.../testing/selftests/sched_ext/allowed_cpus.bpf.c | 24 +-
tools/testing/selftests/sched_ext/allowed_cpus.c | 129 +-
.../selftests/sched_ext/cgroup_nr_cpus.bpf.c | 60 +
tools/testing/selftests/sched_ext/cgroup_nr_cpus.c | 419 +++++++
tools/testing/selftests/sched_ext/config | 3 +
tools/testing/selftests/sched_ext/create_dsq.bpf.c | 43 +
tools/testing/selftests/sched_ext/create_dsq.c | 6 +-
.../testing/selftests/sched_ext/cyclic_kick_wait.c | 2 +-
tools/testing/selftests/sched_ext/dequeue_remote.c | 1 +
.../testing/selftests/sched_ext/enq_blocked.bpf.c | 116 ++
tools/testing/selftests/sched_ext/enq_blocked.c | 917 ++++++++++++++
tools/testing/selftests/sched_ext/enq_blocked.h | 28 +
tools/testing/selftests/sched_ext/exit.c | 8 +-
tools/testing/selftests/sched_ext/hotplug.c | 46 +-
.../selftests/sched_ext/init_enable_count.bpf.c | 8 +
.../selftests/sched_ext/init_enable_count.c | 13 +
tools/testing/selftests/sched_ext/kick.bpf.c | 164 +++
tools/testing/selftests/sched_ext/kick.c | 521 ++++++++
tools/testing/selftests/sched_ext/kick_test.h | 29 +
tools/testing/selftests/sched_ext/maximal.bpf.c | 6 +-
tools/testing/selftests/sched_ext/maximal.c | 2 +
tools/testing/selftests/sched_ext/nohz_tick.bpf.c | 57 +-
tools/testing/selftests/sched_ext/nohz_tick.c | 209 +++-
tools/testing/selftests/sched_ext/nohz_tick_test.h | 13 +
tools/testing/selftests/sched_ext/prog_run.c | 7 +-
tools/testing/selftests/sched_ext/reload_loop.c | 49 +-
tools/testing/selftests/sched_ext/rt_stall.c | 80 +-
tools/testing/selftests/sched_ext/runner.c | 2 +-
tools/testing/selftests/sched_ext/scx_test.h | 57 +-
.../selftests/sched_ext/test_modules/Makefile | 13 +
.../sched_ext/test_modules/scx_enq_blocked_test.c | 195 +++
tools/testing/selftests/sched_ext/util.c | 143 +++
tools/testing/selftests/sched_ext/util.h | 12 +
65 files changed, 6166 insertions(+), 719 deletions(-)
create mode 100644 tools/sched_ext/include/scx/const-defs.h
create mode 100644 tools/sched_ext/include/scx/features.bpf.h
create mode 100644 tools/testing/selftests/sched_ext/cgroup_nr_cpus.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/cgroup_nr_cpus.c
create mode 100644 tools/testing/selftests/sched_ext/enq_blocked.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/enq_blocked.c
create mode 100644 tools/testing/selftests/sched_ext/enq_blocked.h
create mode 100644 tools/testing/selftests/sched_ext/kick.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/kick.c
create mode 100644 tools/testing/selftests/sched_ext/kick_test.h
create mode 100644 tools/testing/selftests/sched_ext/nohz_tick_test.h
create mode 100644 tools/testing/selftests/sched_ext/test_modules/Makefile
create mode 100644 tools/testing/selftests/sched_ext/test_modules/scx_enq_blocked_test.c
--
tejun
^ permalink raw reply [flat|nested] only message in thread
only message in thread, other threads:[~2026-10-19 16:47 UTC | newest]
Thread overview: (only message) (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2026-10-19 16:47 [GIT PULL] sched_ext: Changes for v7.4 Tejun Heo
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.