linux/Documentation/scheduler
Linus Torvalds 98aec86f8c 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.
 -----BEGIN PGP SIGNATURE-----
 
 iIQEABYKACwWIQTfIjM1kS57o3GsC/uxYfJx3gVYGQUCatZJMQ4cdGpAa2VybmVs
 Lm9yZwAKCRCxYfJx3gVYGRgSAP4n0sb6c00/m1VhyjR/75faCpNrvW5fS0zZ5Zon
 fAsCGgD5AUTLMn460Lr9vTPXvS8RGS790V/Id/oH0+up5z0sHQA=
 =Kzaf
 -----END PGP SIGNATURE-----

Merge tag 'sched_ext-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext

Pull sched_ext updates from Tejun Heo:

 - 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.

* tag 'sched_ext-for-7.4' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/sched_ext: (69 commits)
  sched_ext: Drop the locks periodically while walking a user DSQ for re-enqueue
  sched_ext: scx_qmap: Also re-enqueue stranded tasks with scx_bpf_dsq_reenq_task()
  sched_ext: Add scx_bpf_dsq_reenq_task() to re-enqueue single tasks from a DSQ iteration
  sched_ext: Factor out the rq lock switch of scx_dsq_move()
  sched_ext: Don't queue balance callbacks from a core-sched pick
  sched_ext: Don't leave balance callbacks queued across a pick retry
  sched_ext: Fix a bypassed task stalling on a cpu its scheduler has no caps on
  sched_ext: Fix the running task keeping its protection into bypass
  sched_ext: Fix use-after-free of a local reenq node left on an inactive cpu
  sched_ext: Keep proxy donors with slice left on the local DSQ
  selftests/sched_ext: Report reload_loop attach failures
  selftests/sched_ext: Bound exit waits
  selftests/sched_ext: Add SCX_ASSERT_ALIVE and adopt it
  selftests/sched_ext: Fail loudly when EXIT_KIND is missing from BTF
  sched_ext: Add SCX_ECODE_RSN_CGROUP_OFFLINE to user_exit_info.h
  selftests/sched_ext: Fix reload_loop error-path use-after-free
  selftests/sched_ext: Fix build error in dequeue_remote selftest
  sched_ext: scx_qmap: Reset a child's cpuperf targets once its PERF revoke takes effect
  sched_ext: Add ops.sub_child_ecaps_updated() to report a child's effective cap changes
  sched_ext: scx_qmap: Show actual cid use per participant
  ...
2026-10-22 10:37:35 -10:00
..
completion.rst docs: scheduler: completion: Update member of struct completion 2024-09-05 14:17:45 -06:00
index.rst It was a reasonably busy cycle for docs; changes include: 2026-10-20 14:38:38 -10:00
membarrier.rst membarrier: Create Documentation/scheduler/membarrier.rst 2024-02-15 08:04:12 -08:00
sched-arch.rst Documentation: Drop or replace remaining mentions of IA64 2023-09-11 08:13:18 +00:00
sched-bwc.rst docs: scheduler: fix spelling in sched-bwc documentation 2025-02-21 13:27:05 -07:00
sched-capacity.rst sched/topology: Consolidate and clean up access to a CPU's max compute capacity 2023-10-09 12:59:48 +02:00
sched-deadline.rst Documentation/scheduler: Fix duplicated word in sched-deadline 2026-05-03 08:49:11 -06:00
sched-debug.rst sched/debug, Documentation: Remove (most) CONFIG_SCHED_DEBUG references from documentation 2025-03-19 22:20:54 +01:00
sched-design-CFS.rst sched/doc: Update yield_task description in sched-design-CFS 2026-04-09 08:26:38 -06:00
sched-domains.rst sched/debug, Documentation: Remove (most) CONFIG_SCHED_DEBUG references from documentation 2025-03-19 22:20:54 +01:00
sched-eevdf.rst docs: scheduler: Start documenting the EEVDF scheduler 2024-08-07 13:37:16 -06:00
sched-energy.rst sched/doc: Fix stale em_pd_energy() reference in sched-energy 2026-07-15 10:51:28 -06:00
sched-ext.rst sched_ext: Split curr|donor references properly 2026-09-28 09:48:04 -10:00
sched-nice-design.rst Documentation: scheduler: fixed 2 typos in sched-nice-design.rst 2021-05-17 12:42:59 -06:00
sched-paravirt.rst sched/docs: Document cpu_preferred_mask and Preferred CPU concept 2026-09-28 08:44:40 +02:00
sched-pelt.c sched/Documentation: fix code 2026-07-15 10:51:28 -06:00
sched-preemption.rst Documentation: sched-preemption: Add a SPDX license identifier 2026-09-29 16:51:02 -06:00
sched-rt-group.rst sched/rt: Update limit of sched_rt sysctl in documentation 2025-03-06 10:21:31 +01:00
sched-stats.rst docs/sched: Make the sched-stats documentation consistent 2025-06-09 16:23:58 -06:00
sched-util-clamp.rst sched/documentation: Document the util clamp feature 2023-01-05 12:08:34 +01:00
schedutil.rst sched/fair: Remove SCHED_FEAT(UTIL_EST_FASTUP, true) 2023-12-23 15:59:56 +01:00
text_files.rst