mirror of https://lore.kernel.org/lkml/
 help / color / mirror / Atom feed
* [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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox

all inboxes | Powered by JetHome®