]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
Merge tag 'sched-core-2026-04-13' of git://git.kernel.org/pub/scm/linux/kernel/git...
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 14 Apr 2026 20:33:36 +0000 (13:33 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 14 Apr 2026 20:33:36 +0000 (13:33 -0700)
Pull scheduler updates from Ingo Molnar:
 "Fair scheduling updates:
   - Skip SCHED_IDLE rq for SCHED_IDLE tasks (Christian Loehle)
   - Remove superfluous rcu_read_lock() in the wakeup path (K Prateek Nayak)
   - Simplify the entry condition for update_idle_cpu_scan() (K Prateek Nayak)
   - Simplify SIS_UTIL handling in select_idle_cpu() (K Prateek Nayak)
   - Avoid overflow in enqueue_entity() (K Prateek Nayak)
   - Update overutilized detection (Vincent Guittot)
   - Prevent negative lag increase during delayed dequeue (Vincent Guittot)
   - Clear buddies for preempt_short (Vincent Guittot)
   - Implement more complex proportional newidle balance (Peter Zijlstra)
   - Increase weight bits for avg_vruntime (Peter Zijlstra)
   - Use full weight to __calc_delta() (Peter Zijlstra)

  RT and DL scheduling updates:
   - Fix incorrect schedstats for rt and dl thread (Dengjun Su)
   - Skip group schedulable check with rt_group_sched=0 (Michal Koutný)
   - Move group schedulability check to sched_rt_global_validate()
     (Michal Koutný)
   - Add reporting of runtime left & abs deadline to sched_getattr()
     for DEADLINE tasks (Tommaso Cucinotta)

  Scheduling topology updates by K Prateek Nayak:
   - Compute sd_weight considering cpuset partitions
   - Extract "imb_numa_nr" calculation into a separate helper
   - Allocate per-CPU sched_domain_shared in s_data
   - Switch to assigning "sd->shared" from s_data
   - Remove sched_domain_shared allocation with sd_data

  Energy-aware scheduling updates:
   - Filter false overloaded_group case for EAS (Vincent Guittot)
   - PM: EM: Switch to rcu_dereference_all() in wakeup path
     (Dietmar Eggemann)

  Infrastructure updates:
   - Replace use of system_unbound_wq with system_dfl_wq (Marco Crivellari)

  Proxy scheduling updates by John Stultz:
   - Make class_schedulers avoid pushing current, and get rid of proxy_tag_curr()
   - Minimise repeated sched_proxy_exec() checking
   - Fix potentially missing balancing with Proxy Exec
   - Fix and improve task::blocked_on et al handling
   - Add assert_balance_callbacks_empty() helper
   - Add logic to zap balancing callbacks if we pick again
   - Move attach_one_task() and attach_task() helpers to sched.h
   - Handle blocked-waiter migration (and return migration)
   - Add K Prateek Nayak to scheduler reviewers for proxy execution

  Misc cleanups and fixes by John Stultz, Joseph Salisbury, Peter
  Zijlstra, K Prateek Nayak, Michal Koutný, Randy Dunlap, Shrikanth
  Hegde, Vincent Guittot, Zhan Xusheng, Xie Yuanbin and Vincent Guittot"

* tag 'sched-core-2026-04-13' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (46 commits)
  sched/eevdf: Clear buddies for preempt_short
  sched/rt: Cleanup global RT bandwidth functions
  sched/rt: Move group schedulability check to sched_rt_global_validate()
  sched/rt: Skip group schedulable check with rt_group_sched=0
  sched/fair: Avoid overflow in enqueue_entity()
  sched: Use u64 for bandwidth ratio calculations
  sched/fair: Prevent negative lag increase during delayed dequeue
  sched/fair: Use sched_energy_enabled()
  sched: Handle blocked-waiter migration (and return migration)
  sched: Move attach_one_task and attach_task helpers to sched.h
  sched: Add logic to zap balance callbacks if we pick again
  sched: Add assert_balance_callbacks_empty helper
  sched/locking: Add special p->blocked_on==PROXY_WAKING value for proxy return-migration
  sched: Fix modifying donor->blocked on without proper locking
  locking: Add task::blocked_lock to serialize blocked_on state
  sched: Fix potentially missing balancing with Proxy Exec
  sched: Minimise repeated sched_proxy_exec() checking
  sched: Make class_schedulers avoid pushing current, and get rid of proxy_tag_curr()
  MAINTAINERS: Add K Prateek Nayak to scheduler reviewers
  sched/core: Get this cpu once in ttwu_queue_cond()
  ...

14 files changed:
1  2 
MAINTAINERS
include/linux/sched.h
include/uapi/linux/sched.h
kernel/fork.c
kernel/locking/mutex-debug.c
kernel/locking/mutex.c
kernel/locking/mutex.h
kernel/locking/ww_mutex.h
kernel/sched/core.c
kernel/sched/deadline.c
kernel/sched/ext.c
kernel/sched/fair.c
kernel/sched/features.h
kernel/sched/sched.h

diff --cc MAINTAINERS
Simple merge
Simple merge
Simple merge
diff --cc kernel/fork.c
Simple merge
index 94930d506bcfda83f2dd6ab8d559324cfb4c3f0f,cc6aa9c6e9813b2c5d7ad893e1ae7b9321a96470..785decd9d0c0e4f41e4094f2ecc4acabfdc4d4ce
@@@ -59,8 -60,9 +59,8 @@@ void debug_mutex_add_waiter(struct mute
  void debug_mutex_remove_waiter(struct mutex *lock, struct mutex_waiter *waiter,
                         struct task_struct *task)
  {
-       struct mutex *blocked_on = __get_task_blocked_on(task);
+       struct mutex *blocked_on = get_task_blocked_on(task);
  
 -      DEBUG_LOCKS_WARN_ON(list_empty(&waiter->list));
        DEBUG_LOCKS_WARN_ON(waiter->task != task);
        DEBUG_LOCKS_WARN_ON(blocked_on && blocked_on != lock);
  
index 427187ff02db361358b26077f8513714ff39a047,7d359647156dfb98ba8b67a4d15822b4cc4c558e..186b463fe32623157d157c443615d0288777a888
@@@ -709,8 -693,10 +711,10 @@@ __mutex_lock_common(struct mutex *lock
  
                schedule_preempt_disabled();
  
 -              first = __mutex_waiter_is_first(lock, &waiter);
 +              first = lock->first_waiter == &waiter;
  
+               raw_spin_lock_irqsave(&lock->wait_lock, flags);
+               raw_spin_lock(&current->blocked_lock);
                /*
                 * As we likely have been woken up by task
                 * that has cleared our blocked_on state, re-set
Simple merge
Simple merge
index 4495929f4c9b5353556fc3b2c9578c54f9c2b292,49cd5d21716130c51f835d2524aed0ae3cfa59a9..f351296922ac17b68b7029aa4ae22ec09b3354f8
@@@ -6968,13 -7124,8 +7182,9 @@@ keep_resched
                /* Also unlocks the rq: */
                rq = context_switch(rq, prev, next, &rf);
        } else {
-               /* In case next was already curr but just got blocked_donor */
-               if (!task_current_donor(rq, next))
-                       proxy_tag_curr(rq, next);
                rq_unpin_lock(rq, &rf);
                __balance_callbacks(rq, NULL);
 +              hrtick_schedule_exit(rq);
                raw_spin_rq_unlock_irq(rq);
        }
        trace_sched_exit_tp(is_switch);
Simple merge
Simple merge
Simple merge
Simple merge
Simple merge