All of lore.kernel.org
 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 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.