[<prev] [next>] [day] [month] [year] [list]
Message-ID: <aYmQyDHFx3lisCgm@gmail.com>
Date: Mon, 9 Feb 2026 08:46:16 +0100
From: Ingo Molnar <mingo@...nel.org>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: linux-kernel@...r.kernel.org, Peter Zijlstra <peterz@...radead.org>,
Thomas Gleixner <tglx@...utronix.de>,
Juri Lelli <juri.lelli@...hat.com>,
Vincent Guittot <vincent.guittot@...aro.org>,
Dietmar Eggemann <dietmar.eggemann@....com>,
Steven Rostedt <rostedt@...dmis.org>, Mel Gorman <mgorman@...e.de>,
Tejun Heo <tj@...nel.org>, Valentin Schneider <vschneid@...hat.com>,
Shrikanth Hegde <sshegde@...ux.ibm.com>,
Andrea Righi <arighi@...dia.com>,
Joel Fernandes <joelagnelf@...dia.com>
Subject: [GIT PULL] Scheduler changes for v7.0
Linus,
Please pull the latest sched/core Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-core-2026-02-09
for you to fetch changes up to e34881c84c255bc300f24d9fe685324be20da3d1:
Scheduler changes for v7.0:
Scheduler Kconfig space updates:
- Further consolidate configurable preemption modes: reduce
the number of architectures that are allowed to offer
PREEMPT_NONE and PREEMPT_VOLUNTARY, reducing the number
of preemption models from four to just two: 'full' and 'lazy'
on up-to-date architectures (arm64, loongarch, powerpc,
riscv, s390, x86).
None and voluntary are only available as legacy features
on platforms that don't implement lazy preemption yet,
or which don't even support preemption.
The goal is to eventually remove cond_resched() and
voluntary preemption altogether.
(Peter Zijlstra)
RSEQ based 'scheduler time slice extension' support:
This allows a thread to request a time slice extension when it
enters a critical section to avoid contention on a resource when
the thread is scheduled out inside of the critical section.
- Add fields and constants for time slice extension
- Provide static branch for time slice extensions
- Add statistics for time slice extensions
- Add prctl() to enable time slice extensions
- Implement sys_rseq_slice_yield()
- Implement syscall entry work for time slice extensions
- Implement time slice extension enforcement timer
- Reset slice extension when scheduled
- Implement rseq_grant_slice_extension()
- entry: Hook up rseq time slice extension
- selftests: Implement time slice extension test
(Thomas Gleixner)
- Allow registering RSEQ with slice extension
- Move slice_ext_nsec to debugfs
- Lower default slice extension
- selftests/rseq: Add rseq slice histogram script
(Peter Zijlstra)
Scheduler performance/scalability improvements:
- Update rq->avg_idle when a task is moved to an idle CPU,
which improves the scalability of various workloads.
(Shubhang Kaushik)
- Reorder fields in 'struct rq' for better caching
(Blake Jones)
- Fair scheduler SMP NOHZ balancing code speedups:
- Move checking for nohz cpus after time check
- Change likelyhood of nohz.nr_cpus
- Remove nohz.nr_cpus and use weight of cpumask instead
(Shrikanth Hegde)
- Avoid false sharing for sched_clock_irqtime (Wangyang Guo)
- Drop useless cpumask_empty() in find_energy_efficient_cpu()
- Simplify task_numa_find_cpu()
- Use cpumask_weight_and() in sched_balance_find_dst_group()
(Yury Norov)
DL scheduler updates:
- Add a deadline server for sched_ext tasks (by Andrea Righi and
Joel Fernandes, with fixes by Peter Zijlstra)
RT scheduler updates:
- Skip currently executing CPU in rto_next_cpu() (Chen Jinghuang)
Entry code updates and performance improvements, which is part of the
scheduler tree in this cycle due to interdependencies with the RSEQ
based time slice extension work:
- Remove unused syscall argument from syscall_trace_enter()
- Rework syscall_exit_to_user_mode_work() for architecture reuse
- Add arch_ptrace_report_syscall_entry/exit()
- Inline syscall_exit_work() and syscall_trace_enter()
(Jinjie Ruan)
Scheduler core updates:
- Rework sched_class::wakeup_preempt() and rq_modified_*()
- Avoid rq->lock bouncing in sched_balance_newidle()
- Rename rcu_dereference_check_sched_domain() =>
rcu_dereference_sched_domain()
- <linux/compiler_types.h>: Add the __signed_scalar_typeof() helper
(Peter Zijlstra)
Fair scheduler updates/refactoring:
- Fold the sched_avg update
- Change rcu_dereference_check_sched_domain() to rcu-sched
- Switch to rcu_dereference_all()
- Remove superfluous rcu_read_lock()
- Limit hrtick work
(Peter Zijlstra)
- Join two #ifdef CONFIG_FAIR_GROUP_SCHED blocks
- Clean up comments in 'struct cfs_rq'
- Separate se->vlag from se->vprot
- Rename cfs_rq::avg_load to cfs_rq::sum_weight
- Rename cfs_rq::avg_vruntime to ::sum_w_vruntime & helper functions
- Introduce and use the vruntime_cmp() and vruntime_op() wrappers
for wrapped-signed aritmetics
- Sort out 'blocked_load*' namespace noise
(Ingo Molnar)
Scheduler debugging code updates:
- Export hidden tracepoints to modules (Gabriele Monaco)
- Convert copy_from_user() + kstrtouint() to kstrtouint_from_user()
(Fushuai Wang)
- Add assertions to QUEUE_CLASS (Peter Zijlstra)
- hrtimer: Fix tracing oddity (Thomas Gleixner)
Misc fixes and cleanups:
- Re-evaluate scheduling when migrating queued tasks out of
throttled cgroups (Zicheng Qu)
- Remove task_struct->faults_disabled_mapping (Christoph Hellwig)
- Fix math notation errors in avg_vruntime comment (Zhan Xusheng)
- sched/cpufreq: Use %pe format for PTR_ERR() printing (zenghongling)
Thanks,
Ingo
------------------>
Andrea Righi (2):
sched_ext: Add a DL server for sched_ext tasks
selftests/sched_ext: Add test for sched_ext dl_server
Blake Jones (1):
sched: Reorder some fields in struct rq
Chen Jinghuang (1):
sched/rt: Skip currently executing CPU in rto_next_cpu()
Christoph Hellwig (1):
sched: remove task_struct->faults_disabled_mapping
Fushuai Wang (1):
sched/debug: Convert copy_from_user() + kstrtouint() to kstrtouint_from_user()
Gabriele Monaco (2):
sched: Export hidden tracepoints to modules
sched: Fix build for modules using set_tsk_need_resched()
Ingo Molnar (7):
sched/fair: Join two #ifdef CONFIG_FAIR_GROUP_SCHED blocks
sched/fair: Clean up comments in 'struct cfs_rq'
sched/fair: Separate se->vlag from se->vprot
sched/fair: Rename cfs_rq::avg_load to cfs_rq::sum_weight
sched/fair: Rename cfs_rq::avg_vruntime to ::sum_w_vruntime, and helper functions
sched/fair: Introduce and use the vruntime_cmp() and vruntime_op() wrappers for wrapped-signed aritmetics
sched/fair: Sort out 'blocked_load*' namespace noise
Jinjie Ruan (4):
entry: Remove unused syscall argument from syscall_trace_enter()
entry: Rework syscall_exit_to_user_mode_work() for architecture reuse
entry: Add arch_ptrace_report_syscall_entry/exit()
entry: Inline syscall_exit_work() and syscall_trace_enter()
Joel Fernandes (5):
sched/deadline: Clear the defer params
sched/debug: Fix updating of ppos on server write ops
sched/debug: Stop and start server based on if it was active
sched/debug: Add support to change sched_ext server params
selftests/sched_ext: Add test for DL server total_bw consistency
Peter Zijlstra (17):
<linux/compiler_types.h>: Add the __signed_scalar_typeof() helper
sched/fair: Fold the sched_avg update
sched/fair: Avoid rq->lock bouncing in sched_balance_newidle()
sched/headers: Rename rcu_dereference_check_sched_domain() => rcu_dereference_sched_domain()
sched/fair: Switch to rcu_dereference_all()
sched/fair: Remove superfluous rcu_read_lock()
sched/fair: Limit hrtick work
sched/core: Add assertions to QUEUE_CLASS
sched/core: Rework sched_class::wakeup_preempt() and rq_modified_*()
sched: Fix faulty assertion in sched_change_end()
sched/fair: Fix sched_avg fold
sched: Further restrict the preemption modes
rseq: Allow registering RSEQ with slice extension
rseq: Move slice_ext_nsec to debugfs
rseq: Lower default slice extension
selftests/rseq: Add rseq slice histogram script
sched/debug: Fix dl_server (re)start conditions
Shrikanth Hegde (3):
sched/fair: Move checking for nohz cpus after time check
sched/fair: Change likelyhood of nohz.nr_cpus
sched/fair: Remove nohz.nr_cpus and use weight of cpumask instead
Shubhang Kaushik (1):
sched: Update rq->avg_idle when a task is moved to an idle CPU
Thomas Gleixner (12):
rseq: Add fields and constants for time slice extension
rseq: Provide static branch for time slice extensions
rseq: Add statistics for time slice extensions
rseq: Add prctl() to enable time slice extensions
rseq: Implement sys_rseq_slice_yield()
rseq: Implement syscall entry work for time slice extensions
rseq: Implement time slice extension enforcement timer
rseq: Reset slice extension when scheduled
rseq: Implement rseq_grant_slice_extension()
entry: Hook up rseq time slice extension
selftests/rseq: Implement time slice extension test
hrtimer: Fix trace oddity
Wangyang Guo (1):
sched/clock: Avoid false sharing for sched_clock_irqtime
Yury Norov (NVIDIA) (3):
sched/fair: Drop useless cpumask_empty() in find_energy_efficient_cpu()
sched/fair: Simplify task_numa_find_cpu()
sched/fair: Use cpumask_weight_and() in sched_balance_find_dst_group()
Zhan Xusheng (1):
sched/fair: Fix math notation errors in avg_vruntime comment
Zicheng Qu (1):
sched: Re-evaluate scheduling when migrating queued tasks out of throttled cgroups
zenghongling (1):
sched/cpufreq: Use %pe format for PTR_ERR() printing
Documentation/admin-guide/kernel-parameters.txt | 5 +
Documentation/userspace-api/index.rst | 1 +
Documentation/userspace-api/rseq.rst | 140 ++++++++
arch/alpha/kernel/syscalls/syscall.tbl | 1 +
arch/arm/tools/syscall.tbl | 1 +
arch/arm64/tools/syscall_32.tbl | 1 +
arch/m68k/kernel/syscalls/syscall.tbl | 1 +
arch/microblaze/kernel/syscalls/syscall.tbl | 1 +
arch/mips/kernel/syscalls/syscall_n32.tbl | 1 +
arch/mips/kernel/syscalls/syscall_n64.tbl | 1 +
arch/mips/kernel/syscalls/syscall_o32.tbl | 1 +
arch/parisc/kernel/syscalls/syscall.tbl | 1 +
arch/powerpc/kernel/syscalls/syscall.tbl | 1 +
arch/s390/kernel/syscalls/syscall.tbl | 1 +
arch/sh/kernel/syscalls/syscall.tbl | 1 +
arch/sparc/kernel/syscalls/syscall.tbl | 1 +
arch/x86/entry/syscalls/syscall_32.tbl | 1 +
arch/x86/entry/syscalls/syscall_64.tbl | 1 +
arch/x86/kernel/tsc.c | 2 -
arch/xtensa/kernel/syscalls/syscall.tbl | 1 +
include/linux/compiler_types.h | 19 ++
include/linux/entry-common.h | 167 ++++++++-
include/linux/rseq.h | 11 +
include/linux/rseq_entry.h | 192 ++++++++++-
include/linux/rseq_types.h | 32 +-
include/linux/sched.h | 14 +-
include/linux/syscalls.h | 1 +
include/linux/thread_info.h | 16 +-
include/uapi/asm-generic/unistd.h | 5 +-
include/uapi/linux/prctl.h | 10 +
include/uapi/linux/rseq.h | 41 ++-
init/Kconfig | 12 +
init/init_task.c | 1 -
kernel/Kconfig.preempt | 3 +
kernel/entry/common.c | 27 +-
kernel/entry/common.h | 7 -
kernel/entry/syscall-common.c | 97 +-----
kernel/entry/syscall_user_dispatch.c | 4 +-
kernel/rseq.c | 365 +++++++++++++++++++-
kernel/sched/clock.c | 3 +
kernel/sched/core.c | 86 +++--
kernel/sched/cpufreq_schedutil.c | 2 +-
kernel/sched/cputime.c | 9 +-
kernel/sched/deadline.c | 105 ++++--
kernel/sched/debug.c | 187 ++++++++---
kernel/sched/ext.c | 42 ++-
kernel/sched/fair.c | 411 ++++++++++++-----------
kernel/sched/idle.c | 7 +-
kernel/sched/rt.c | 14 +-
kernel/sched/sched.h | 142 ++++----
kernel/sched/stop_task.c | 3 -
kernel/sched/topology.c | 5 +
kernel/sys.c | 6 +
kernel/sys_ni.c | 1 +
kernel/time/hrtimer.c | 2 +-
scripts/syscall.tbl | 1 +
tools/testing/selftests/rseq/.gitignore | 1 +
tools/testing/selftests/rseq/Makefile | 5 +-
tools/testing/selftests/rseq/rseq-abi.h | 27 ++
tools/testing/selftests/rseq/rseq-slice-hist.py | 132 ++++++++
tools/testing/selftests/rseq/slice_test.c | 219 ++++++++++++
tools/testing/selftests/sched_ext/Makefile | 2 +
tools/testing/selftests/sched_ext/rt_stall.bpf.c | 23 ++
tools/testing/selftests/sched_ext/rt_stall.c | 240 +++++++++++++
tools/testing/selftests/sched_ext/total_bw.c | 281 ++++++++++++++++
65 files changed, 2598 insertions(+), 546 deletions(-)
create mode 100644 Documentation/userspace-api/rseq.rst
delete mode 100644 kernel/entry/common.h
create mode 100644 tools/testing/selftests/rseq/rseq-slice-hist.py
create mode 100644 tools/testing/selftests/rseq/slice_test.c
create mode 100644 tools/testing/selftests/sched_ext/rt_stall.bpf.c
create mode 100644 tools/testing/selftests/sched_ext/rt_stall.c
create mode 100644 tools/testing/selftests/sched_ext/total_bw.c
Powered by blists - more mailing lists