From: Tejun Heo <tj@kernel.org>
To: Linus Torvalds <torvalds@linux-foundation.org>
Cc: sched-ext@lists.linux.dev, David Vernet <void@manifault.com>,
Andrea Righi <arighi@nvidia.com>,
Changwoo Min <changwoo@igalia.com>,
Emil Tsalapatis <emil@etsalapatis.com>,
linux-kernel@vger.kernel.org
Subject: [GIT PULL] sched_ext changes for v7.2
Date: Mon, 15 Jun 2026 12:56:30 -1000 [thread overview]
Message-ID: <6a0da8f90fd3890f734555f1632a3a0f@kernel.org> (raw)
Hello,
The following changes since commit 53cc12a2dc88c2c6f62f507548640885a70a56a8:
bpf/arena: Add bpf_arena_map_kern_vm_start() and bpf_prog_arena() (2026-05-23 01:50:33 -0700)
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.2
for you to fetch changes up to 2e05f2fd0dd72aa8aa56cf355e1e39a3f565b4ca:
sched_ext: Add scx_arena_to_kaddr() / scx_kaddr_to_arena() (2026-06-03 23:57:03 -1000)
----------------------------------------------------------------
sched_ext: Changes for v7.2
This depends on the BPF arena work in bpf-next and should be pulled after
it. for-7.1-fixes was merged in a few times to avoid conflicts with the
feature changes.
- Most of this continues the in-development sub-scheduler support, which
lets a root BPF scheduler delegate to nested sub-schedulers. The
dispatch-path building blocks landed in 7.1. A follow-up patchset in
development will complete enqueue-path support for hierarchical
scheduling. This cycle adds most of that infrastructure:
- Topological CPU IDs (cids): a dense, topology-ordered CPU numbering
where the CPUs of a core, LLC, or NUMA node form contiguous ranges,
so a topology unit becomes a (start, length) slice. Raw CPU numbers
are sparse and don't track topological closeness, which makes them
clumsy for sharding work across sub-schedulers and awkward in BPF.
- cmask: bitmaps windowed over a slice of cid space, so a sub-scheduler
can track, for example, the idle cids of its shard without a full
NR_CPUS cpumask.
- A struct_ops variant that cid-form sub-schedulers register with,
along with the cid-form kfuncs they call.
- BPF arena integration, which sub-scheduler support is built on. The
bpf-next additions let the kernel read and write the BPF scheduler's
arena directly, turning it into a real kernel/BPF shared-memory
channel. Shared state like the per-CPU cmask now lives there.
- scx_qmap is reworked to exercise the new arena and cid interfaces.
- Exit-dump improvements: dump the faulting CPU first, expose the exit
CPU to BPF and userspace, and normalize the dump header.
- Misc kfuncs and cleanups: a task-ID lookup kfunc, __printf checking on
the error and dump formatters, header reorganization, and assorted
fixes.
----------------------------------------------------------------
Andrea Righi (1):
sched_ext: Replace tryget_task_struct() with get_task_struct()
Changwoo Min (3):
sched_ext: Extract scx_dump_cpu() from scx_dump_state()
sched_ext: Dump the exit CPU first
sched_ext: Expose exit_cpu to BPF and userspace
Cheng-Yang Chou (9):
tools/sched_ext: Handle migration-disabled tasks in scx_central
tools/sched_ext: Remove dead -d option in scx_flatcg
sched_ext: Documentation: clarify arena-backed doubly-linked lists in scx_qmap
tools/sched_ext: Remove unused nr_cpus in scx_cpu0
sched_ext: Normalize exit dump header to "on CPU N"
selftests/sched_ext: Fix select_cpu_dfl link leak on early return
tools/sched_ext: scx_qmap: Fix qa arena placement
sched_ext: idle: Fix errno loss in scx_idle_init()
selftests/sched_ext: Fix dsq_move_to_local check
Kuba Piecuch (1):
sched_ext: Documentation: add note about multiple ops.enqueue() calls in a row
Tejun Heo (50):
sched_ext: scx_qmap: rename tctx to taskc
sched_ext: scx_qmap: move globals and cpu_ctx into a BPF arena map
sched_ext: scx_qmap: move task_ctx into a BPF arena slab
sched_ext: scx_qmap: replace FIFO queue maps with arena-backed lists
sched_ext: Document the ops compat strategy in compat.h/compat.bpf.h
Merge branch 'for-7.1-fixes' into for-7.2
sched_ext: add p->scx.tid and SCX_OPS_TID_TO_TASK lookup
Merge branch 'for-7.1-fixes' into for-7.2
Merge branch 'for-7.1-fixes' into for-7.2
Merge branch 'for-7.1-fixes' into for-7.2
Merge branch 'for-7.1-fixes' into for-7.2
sched_ext: Collect ext_*.c include headers in build_policy.c
sched_ext: Add ext_types.h for early subsystem-wide defs
sched_ext: Rename ops_cpu_valid() to scx_cpu_valid() and expose it
sched_ext: Move scx_exit(), scx_error() and friends to ext_internal.h
sched_ext: Shift scx_kick_cpu() validity check to scx_bpf_kick_cpu()
sched_ext: Relocate cpu_acquire/cpu_release to end of struct sched_ext_ops
sched_ext: Make scx_enable() take scx_enable_cmd
sched_ext: Add topological CPU IDs (cids)
sched_ext: Add scx_bpf_cid_override() kfunc
tools/sched_ext: Add struct_size() helpers to common.bpf.h
sched_ext: Add cmask, a base-windowed bitmap over cid space
sched_ext: Add cid-form kfunc wrappers alongside cpu-form
sched_ext: Add bpf_sched_ext_ops_cid struct_ops type
sched_ext: Forbid cpu-form kfuncs from cid-form schedulers
tools/sched_ext: scx_qmap: Restart on hotplug instead of cpu_online/offline
tools/sched_ext: scx_qmap: Add cmask-based idle tracking and cid-based idle pick
tools/sched_ext: scx_qmap: Port to cid-form struct_ops
sched_ext: Require cid-form struct_ops for sub-sched support
sched_ext: Add __printf format attributes to scx_vexit() and bstr formatters
sched_ext: Use offsetofend on both sides of the ops_cid layout assert
sched_ext: Fix ops_cid layout assert
sched_ext: Add scx_task_iter_relock() and use it in scx_root_enable_workfn()
Merge branch 'for-7.1-fixes' into for-7.2
sched_ext: Mark !CONFIG_EXT_SUB_SCHED dummy stubs static inline
Merge branch 'for-7.1-fixes' into for-7.2
Merge branch 'for-7.1-fixes' into for-7.2
sched_ext: Rename scx_cmask.nr_bits to nr_cids
sched_ext: Track bits[] storage size in struct scx_cmask
sched_ext: Add cmask mask ops
Merge branch 'arena_direct_access' of git://git.kernel.org/pub/scm/linux/kernel/git/bpf/bpf-next into for-7.2
sched_ext: Require an arena for cid-form schedulers
sched_ext: Sub-allocator over kernel-claimed BPF arena pages
sched_ext: Convert ops.set_cmask() to arena-resident cmask
sched_ext: Guard BPF arena helper calls to fix 32-bit build
sched_ext: Order single-cid cmask helpers as (cid, mask)
tools/sched_ext: Order single-cid cmask helpers as (cid, mask)
sched_ext: Add scx_cmask_test() and scx_cmask_for_each_cid()
sched_ext: Make scx_bpf_kick_cid() return s32
sched_ext: Add scx_arena_to_kaddr() / scx_kaddr_to_arena()
Zhao Mengmeng (3):
tools/sched_ext: Add missing -c option in scx_qmap help
sched_ext: Print sub-scheduler disabled log and reason
selftests/sched_ext: Include common.bpf.h to avoid build failure
Zqiang (1):
sched_ext: Remove redundant rcu_read_lock/unlock() in sysrq_handle_sched_ext_reset()
Documentation/scheduler/sched-ext.rst | 7 +-
include/linux/sched/ext.h | 9 +
kernel/sched/build_policy.c | 9 +
kernel/sched/ext.c | 1261 ++++++++++++++++----
kernel/sched/ext_arena.c | 131 ++
kernel/sched/ext_arena.h | 18 +
kernel/sched/ext_cid.c | 707 +++++++++++
kernel/sched/ext_cid.h | 271 +++++
kernel/sched/ext_idle.c | 23 +-
kernel/sched/ext_internal.h | 280 ++++-
kernel/sched/ext_types.h | 144 +++
tools/sched_ext/README.md | 6 +-
tools/sched_ext/include/scx/cid.bpf.h | 678 +++++++++++
tools/sched_ext/include/scx/common.bpf.h | 28 +
tools/sched_ext/include/scx/compat.bpf.h | 30 +-
tools/sched_ext/include/scx/compat.h | 23 +-
tools/sched_ext/include/scx/user_exit_info.bpf.h | 3 +
tools/sched_ext/include/scx/user_exit_info.h | 2 +
.../sched_ext/include/scx/user_exit_info_common.h | 5 +
tools/sched_ext/scx_central.bpf.c | 10 +-
tools/sched_ext/scx_cpu0.bpf.c | 2 -
tools/sched_ext/scx_cpu0.c | 2 -
tools/sched_ext/scx_flatcg.c | 12 +-
tools/sched_ext/scx_qmap.bpf.c | 890 ++++++++------
tools/sched_ext/scx_qmap.c | 107 +-
tools/sched_ext/scx_qmap.h | 73 ++
.../selftests/sched_ext/non_scx_kfunc_deny.bpf.c | 7 +-
tools/testing/selftests/sched_ext/peek_dsq.bpf.c | 2 +-
tools/testing/selftests/sched_ext/select_cpu_dfl.c | 54 +-
29 files changed, 4090 insertions(+), 704 deletions(-)
create mode 100644 kernel/sched/ext_arena.c
create mode 100644 kernel/sched/ext_arena.h
create mode 100644 kernel/sched/ext_cid.c
create mode 100644 kernel/sched/ext_cid.h
create mode 100644 kernel/sched/ext_types.h
create mode 100644 tools/sched_ext/include/scx/cid.bpf.h
create mode 100644 tools/sched_ext/scx_qmap.h
--
tejun
reply other threads:[~2026-06-15 22:56 UTC|newest]
Thread overview: [no followups] expand[flat|nested] mbox.gz Atom feed
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=6a0da8f90fd3890f734555f1632a3a0f@kernel.org \
--to=tj@kernel.org \
--cc=arighi@nvidia.com \
--cc=changwoo@igalia.com \
--cc=emil@etsalapatis.com \
--cc=linux-kernel@vger.kernel.org \
--cc=sched-ext@lists.linux.dev \
--cc=torvalds@linux-foundation.org \
--cc=void@manifault.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
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.