Skip to contentSkip to conversation

Scheduler updates for v7.4

GIT PULL Merged Ingo Molnar 6 participants 7 messages Oct 18 – Nov 1 Regressions

lore
Share & tools
lore
#0 lore raw

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
merge bot Merged
#1 lore raw
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.git sched-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
#2 lore raw
In reply to Ingo Molnar
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

#3 lore raw
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-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

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

#4 lore raw
In reply to Linus Torvalds

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.git sched-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-idle

where 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

#5 lore raw
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.git sched-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-idle

where 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

#6 lore raw
In reply to Linus Torvalds
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-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>
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