Scheduler updates for v7.4
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-10-18
for you to fetch changes up to b99b7f60c5b473d374c68b53753153b4aa9e0702:
Scheduler updates:
Kconfig updates:
- Simplify PREEMPT_DYNAMIC (Mark Rutland)
Fair scheduler updates:
- Remove redundant RUN_TO_PARITY check (Elif Topuz)
- Declare augmented callbacks per field, fix rb_add_augmented_cached() descent (Yiwei Lin, Peter Zijlstra)
- Restart fair hrtick after same-task repicks (Shubhang Kaushik)
- Improve the scheduling latency of short slice tasks (Vincent Guittot)
Deadline/RT scheduler updates:
- Check start_dl_timer expiry with ktime_before() (Liang Hao)
- irq_work: CPU-hotplug improvements on PREEMPT_RT (Sebastian Andrzej Siewior)
Energy-aware scheduling updates:
- Implement the steal_governor, introduce preferred CPUs and steal-driven vCPU backoff (Shrikanth Hegde)
Multi-processor load-balancing updates:
- Enable preferred SMT siblings on NVIDIA Olympus (Andrea Righi)
- Randomize equally shallow idle CPU picks (Christian Loehle)
- Remove redundant core_sched_seq (Hui Su)
Cache-aware scheduling updates:
- Avoid publishing partial LLC utilization (Jemmy Wong)
NUMA-balancing updates:
- Reset NUMA fault locality after scan period update (Eric Kim)
Proxy execution updates:
- Ongoing work to implement sleeping owner handling for proxy execution (John Stultz, Vasily Gorbik)
- Preparatory steps to make sched_ext compatible with proxy execution (Andrea Righi)
Scheduler infrastructure updates & fixes:
- Remove the RCU wait from PSI trigger destruction (Shakeel Butt)
- Avoid modifying wait-entry on failed priority registration (Hui Su)
- Use the new static key API for sched_feat (Hongyan Xia)
- Convert paravirt_steal to new static key APIs (Hongyan Xia)
- cputime: Don't account idle time twice after dyntick-idle (Stian Halseth)
Scheduler debugging updates:
- Set TIF_NEED_RESCHED before calling __trace_set_need_resched() (Sechang Lim)
- Fix context analysis errors in non-preferred CPU push (Shrikanth Hegde)
Misc cleanups and fixes by Christian Loehle, Shubhang Kaushik, Thomas Huth and Vladimir Zapolskiy.
Thanks,
Ingo
------------------>
Andrea Righi (7):
sched/core: Drop mutex locks before proxy rescheduling sched/core: Dequeue waking proxy donors before reset sched/core: Mark wakeups completed through ttwu_runnable()
sched: Add helper to block retained proxy donors
sched: Add sched_ext hooks for proxy execution sched/fair: Honor asymmetric SMT priority in idle selection sched/topology: Add asymmetric SMT packing override
Christian Loehle (3):
sched/fair: Drop idle recency from slow-path CPU selection sched/fair: Randomize equally shallow slow-path candidates
sched: Replace nr_iowait_cpu() with a bool accessor
Elif Topuz (1):
sched/eevdf: Remove redundant RUN_TO_PARITY check
Eric Kim (1):
sched/fair: Reset NUMA fault locality after scan period update
Hongyan Xia (2):
sched: Convert paravirt_steal to new static key APIs sched/feat: Use the new static key API for sched_feat
Hui Su (2):
sched/core: Remove redundant core_sched_seq sched/wait: Avoid modifying entry on failed priority registration
Jemmy Wong (1):
sched/cache: Avoid publishing partial LLC utilization
John Stultz (4):
sched/core: Avoid migrating blocked_on tasks
sched: Switch rq->next_class in proxy_reset_donor()
sched: Break out core of attach_tasks() helper into sched.h
sched: Migrate whole chain in proxy_migrate_task()
Kayra Cizmeci (2):
sched/fair: Remove dead code on enqueue_task_fair() Revert "sched/fair: Remove dead code on enqueue_task_fair()"
Liang Hao (1):
sched/deadline: check start_dl_timer expiry with ktime_before()
Mark Rutland (7):
sched: dynamic: Make PREEMPT_DYNAMIC depend on ARCH_HAS_PREEMPT_LAZY
sched: dynamic: Simplify {cond,might}_resched()
sched: dynamic: Simplify preempt_schedule{,_notrace}()
sched: dynamic: Simplify irqentry_exit_cond_resched()
sched: dynamic: Remove HAVE_PREEMPT_DYNAMIC_{CALL,KEY}
sched: dynamic: Simplify preempt model accessors
sched: dynamic: Fix preemption model strings
Peter Zijlstra (Intel) (1):
rbtree: Declare augmented callbacks per field with RB_AUG()
Sebastian Andrzej Siewior (3):
irq_work: Update a comment regarding CPU hotplug invocation
irq_work: Flush lazy work CPU down on PREEMPT_RT
smpboot: Don't park the thread if work is pending
Sechang Lim (1):
sched: Set TIF_NEED_RESCHED before calling __trace_set_need_resched()
Shakeel Butt (1):
sched/psi: Remove the RCU wait from trigger destruction
Shrikanth Hegde (14):
sched/cputime: Add kcpustat_field_total helper
cpumask: Introduce cpumask_intersects_and
sched/docs: Document cpu_preferred_mask and Preferred CPU concept
cpumask: Introduce cpu_preferred_mask
sysfs: Add preferred CPU file
sched/core: Try to use a preferred CPU in is_cpu_allowed sched/fair: Load balance only among preferred CPUs sched/core: Push current task from non preferred CPU sched/debug: Add migration stats due to non preferred CPUs
virt: Introduce steal governor driver virt/steal_governor: Add control knobs for handling steal values virt/steal_governor: Implement steal_governor policy loop virt/steal_governor: Enable the driver
sched/core: Fix context analysis errors in non-preferred CPU push
Shubhang Kaushik (Ampere) (2):
sched: Restart fair hrtick after same-task repicks sched/wait: Clarify WF_SYNC wakeup semantics
Stian Halseth (1):
sched/cputime: Don't account idle time twice after dyntick-idle
Thomas Huth (1):
sched/headers: Replace __ASSEMBLY__ with __ASSEMBLER__ in the <uapi/linux/sched.h> header
Vasily Gorbik (2):
sched/core: Don't steal a proxy-exec donor sched/core: Don't proxy-exec unmatched cookie lock owners
Vincent Guittot (3):
sched/eevdf: Ensure that vprot will never go above a min slice sched/eevdf: Align update_protect_slice to set_protect_slice sched/eevdf: Handle more short slice waking cases
Vladimir Zapolskiy (1):
sched: Remove unneeded function type cast in do_balance_callbacks()
Yiwei Lin (3):
rbtree_test: Use rb_add() and rb_add_cached() for the basic tests
rbtree: Update augmented data on the way down in rb_add_augmented_cached()
rbtree_test: Use rb_add_augmented_cached() for the cached augmented test
Documentation/ABI/testing/sysfs-devices-system-cpu | 14 + Documentation/admin-guide/kernel-parameters.txt | 12 + Documentation/core-api/rbtree.rst | 27 +- Documentation/driver-api/index.rst | 1 + Documentation/driver-api/steal-governor.rst | 151 +++++++ Documentation/scheduler/index.rst | 1 + Documentation/scheduler/sched-paravirt.rst | 67 +++ MAINTAINERS | 9 + arch/Kconfig | 38 -- arch/arm64/Kconfig | 1 - arch/arm64/include/asm/preempt.h | 10 - arch/arm64/kernel/paravirt.c | 4 +- arch/loongarch/Kconfig | 1 - arch/loongarch/kernel/paravirt.c | 4 +- arch/powerpc/Kconfig | 1 - arch/powerpc/platforms/pseries/setup.c | 4 +- arch/riscv/Kconfig | 1 - arch/riscv/kernel/paravirt.c | 4 +- arch/s390/Kconfig | 1 - arch/s390/include/asm/preempt.h | 11 - arch/s390/kernel/hiperdispatch.c | 10 +- arch/s390/kernel/idle.c | 4 +- arch/x86/Kconfig | 1 - arch/x86/include/asm/preempt.h | 28 -- arch/x86/kernel/cpu/vmware.c | 4 +- arch/x86/kernel/kvm.c | 4 +- drivers/base/cpu.c | 12 + drivers/virt/Kconfig | 17 + drivers/virt/Makefile | 1 + drivers/virt/steal_governor.c | 296 +++++++++++++ drivers/xen/time.c | 4 +- fs/proc/uptime.c | 6 +- include/asm-generic/preempt.h | 10 - include/linux/bitmap.h | 14 + include/linux/cpumask.h | 42 ++ include/linux/irq-entry-common.h | 17 +- include/linux/irq_work.h | 2 + include/linux/kernel.h | 20 - include/linux/kernel_stat.h | 18 +- include/linux/preempt.h | 20 +- include/linux/rbtree_augmented.h | 201 ++++++--- include/linux/sched.h | 37 +- include/linux/sched/cputime.h | 6 +- include/linux/sched/stat.h | 2 +- include/uapi/linux/sched.h | 2 +- kernel/Kconfig.preempt | 13 +- kernel/cpu.c | 6 + kernel/entry/common.c | 17 +- kernel/irq_work.c | 16 +- kernel/sched/core.c | 464 +++++++++++---------- kernel/sched/cputime.c | 63 ++- kernel/sched/deadline.c | 9 +- kernel/sched/debug.c | 21 +- kernel/sched/ext/ext.c | 18 +- kernel/sched/ext/ext.h | 7 + kernel/sched/fair.c | 279 +++++++------ kernel/sched/idle.c | 5 +- kernel/sched/psi.c | 25 +- kernel/sched/rt.c | 7 +- kernel/sched/sched.h | 80 +++- kernel/sched/stop_task.c | 5 +- kernel/sched/topology.c | 18 + kernel/sched/wait.c | 25 +- kernel/smp.c | 1 + kernel/smpboot.c | 6 +- kernel/time/tick-sched.c | 22 +- lib/bitmap.c | 17 + lib/rbtree_test.c | 62 +-- tools/perf/trace/beauty/include/uapi/linux/sched.h | 2 +- 69 files changed, 1513 insertions(+), 815 deletions(-) create mode 100644 Documentation/driver-api/steal-governor.rst create mode 100644 Documentation/scheduler/sched-paravirt.rst create mode 100644 drivers/virt/steal_governor.c
The pull request you sent on Sun, 18 Oct 2026 12:43:04 +0200:
The pull request you sent on Sun, 18 Oct 2026 12:43:04 +0200:
Quoted 1 line
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitsched-core-2026-10-18
has been merged into torvalds/linux.git:
https://git.kernel.org/torvalds/c/cb95904b470d2d347012d5e360303cf478ca5362
Thank you!
Signature · 2 lines
Deet-doot-dot, I am a bot. https://korg.docs.kernel.org/prtracker.html
Quoted 4 lines · Ingo Molnar
Please pull the latest sched/core Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-core-2026-10-18
So this seems to trigger for me on my laptop. Not every boot, but I've seen it at least twice now:
Quoted 2 lines
Stian Halseth (1):
sched/cputime: Don't account idle time twice after dyntick-idle
where the new WARN_ON_ONCE() triggers at boot, resulting in a splat like this
now < tick_start
WARNING: kernel/sched/cputime.c:481 at
kcpustat_dyntick_stop+0x82/0x90, CPU#2: swapper/2/0
Modules linked in:
CPU: 2 UID: 0 PID: 0 Comm: swapper/2 Not tainted
7.3.0-19045-gb92f6e90cf05 #7 PREEMPT(lazy)
Hardware name: Dell Inc. XPS 13 9380/0KTW76, BIOS 1.26.0 09/11/2023
RIP: 0010:kcpustat_dyntick_stop+0x82/0x90
Call Trace:
<TASK>
tick_nohz_idle_exit+0xaf/0x140
do_idle+0x1f5/0x2e0
cpu_startup_entry+0x20/0x30
start_secondary+0xf0/0x120
common_startup_64+0x13e/0x148
</TASK>I haven't tried to figure out why, I'm just notifying the guilty parties...
Linus
Quoted 11 lines · Linus Torvalds
Quoted 4 lines · Ingo Molnar
Please pull the latest sched/core Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-core-2026-10-18So this seems to trigger for me on my laptop. Not every boot, but I've seen it at least twice now:
Quoted 2 lines
Stian Halseth (1):
sched/cputime: Don't account idle time twice after dyntick-idle
Not my area of expertise, as usual, but FWIW: a fix for that one that from a brief look is about the issue you are seeing is discussed here:
sched/cputime: Don't warn when the tick period starts after idle exit
https://lore.kernel.org/all/[email protected]/
Ciao, Thorsten
Quoted 22 lines
where the new
WARN_ON_ONCE()triggers at boot, resulting in a splat like thisnow <
tick_start
WARNING:kernel/sched/cputime.c:481atkcpustat_dyntick_stop+0x82/0x90, CPU#2: swapper/2/0 Modules linked in: CPU: 2 UID: 0 PID: 0 Comm: swapper/2 Not tainted 7.3.0-19045-gb92f6e90cf05 #7 PREEMPT(lazy) Hardware name: Dell Inc. XPS 13 9380/0KTW76, BIOS 1.26.0 09/11/2023 RIP: 0010:kcpustat_dyntick_stop+0x82/0x90 Call Trace: <TASK> tick_nohz_idle_exit+0xaf/0x140 do_idle+0x1f5/0x2e0 cpu_startup_entry+0x20/0x30 start_secondary+0xf0/0x120 common_startup_64+0x13e/0x148 </TASK>I haven't tried to figure out why, I'm just notifying the guilty parties...
Linus
Hi Linus,
Quoted 7 lines · Linus Torvalds
Quoted 5 lines · Ingo Molnar
Please pull the latest sched/core Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitsched-core- 2026-10-18
Quoted 9 lines
So this seems to trigger for me on my laptop. Not every boot, but I've seen it at least twice now:
Quoted 2 lines
Stian Halseth (1):
sched/cputime: Don't account idle time twice after dyntick-idlewhere the new
WARN_ON_ONCE()triggers at boot, resulting in a splat like this
Sorry about that. Paul Menzel and Breno Leitao hit the same. Nothing is accounted wrong, the warning is just wrong, and the fix Thorsten linked drops it:
https://lore.kernel.org/all/[email protected]/
Since this is getting more attention, I'll send a v2 with a better commit message and the reports added.
/Stian
Quoted 20 lines · Stian Halseth
Hi Linus,
Quoted 7 lines · Linus Torvalds
Quoted 5 lines · Ingo Molnar
Please pull the latest sched/core Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.gitsched-core- 2026-10-18Quoted 9 lines
So this seems to trigger for me on my laptop. Not every boot, but I've seen it at least twice now:
Quoted 2 lines
Stian Halseth (1):
sched/cputime: Don't account idle time twice after dyntick-idlewhere the new
WARN_ON_ONCE()triggers at boot, resulting in a splat like this
Quoted 8 lines
Sorry about that. Paul Menzel and Breno Leitao hit the same. Nothing is accounted wrong, the warning is just wrong, and the fix Thorsten linked drops it:
https://lore.kernel.org/all/[email protected]/
Since this is getting more attention, I'll send a v2 with a better commit message and the reports added.
Thank you, I've queued up the fix and will send it to Linus soon so that it gets into -rc1.
Ingo
Quoted 31 lines · Linus Torvalds
Quoted 4 lines · Ingo Molnar
Please pull the latest sched/core Git tree from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git sched-core-2026-10-18So this seems to trigger for me on my laptop. Not every boot, but I've seen it at least twice now:
Quoted 2 lines
Stian Halseth (1):
sched/cputime: Don't account idle time twice after dyntick-idlewhere the new
WARN_ON_ONCE()triggers at boot, resulting in a splat like thisnow <
tick_start
WARNING:kernel/sched/cputime.c:481atkcpustat_dyntick_stop+0x82/0x90, CPU#2: swapper/2/0 Modules linked in: CPU: 2 UID: 0 PID: 0 Comm: swapper/2 Not tainted 7.3.0-19045-gb92f6e90cf05 #7 PREEMPT(lazy) Hardware name: Dell Inc. XPS 13 9380/0KTW76, BIOS 1.26.0 09/11/2023 RIP: 0010:kcpustat_dyntick_stop+0x82/0x90 Call Trace: <TASK> tick_nohz_idle_exit+0xaf/0x140 do_idle+0x1f5/0x2e0 cpu_startup_entry+0x20/0x30 start_secondary+0xf0/0x120 common_startup_64+0x13e/0x148 </TASK>
Quoted 1 line
I haven't tried to figure out why, I'm just notifying the guilty parties...
Sorry about that, Stian has a fix, I'm just trying to wrap my head around it before giving a final ACK.
Thanks.
Signature · 2 lines
Frederic Weisbecker SUSE Labs