]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
sched/core: Check for rcu_read_lock_any_held() in idle_get_state()
authorK Prateek Nayak <kprateek.nayak@amd.com>
Thu, 12 Mar 2026 04:44:31 +0000 (04:44 +0000)
committerPeter Zijlstra <peterz@infradead.org>
Wed, 18 Mar 2026 08:06:49 +0000 (09:06 +0100)
Similar to commit 71fedc41c23b ("sched/fair: Switch to
rcu_dereference_all()"), switch to checking for rcu_read_lock_any_held()
in idle_get_state() to allow removing superfluous rcu_read_lock()
regions in the fair task's wakeup path where the pi_lock is held and
IRQs are disabled.

Signed-off-by: K Prateek Nayak <kprateek.nayak@amd.com>
Signed-off-by: Peter Zijlstra (Intel) <peterz@infradead.org>
Reviewed-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Tested-by: Dietmar Eggemann <dietmar.eggemann@arm.com>
Link: https://patch.msgid.link/20260312044434.1974-7-kprateek.nayak@amd.com
kernel/sched/sched.h

index 953d89d718042e3125783b79af1246692484b2bf..b863bbda6de88c5055f499446925a0faf5639842 100644 (file)
@@ -2853,7 +2853,7 @@ static inline void idle_set_state(struct rq *rq,
 
 static inline struct cpuidle_state *idle_get_state(struct rq *rq)
 {
-       WARN_ON_ONCE(!rcu_read_lock_held());
+       lockdep_assert(rcu_read_lock_any_held());
 
        return rq->idle_state;
 }