Re: [PATCH v4 6/9] sched/core: Check for rcu_read_lock_any_held() in idle_get_state()
From: Peter Zijlstra
Date: Thu Mar 12 2026 - 05:46:24 EST
On Thu, Mar 12, 2026 at 04:44:31AM +0000, K Prateek Nayak wrote:
> 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@xxxxxxx>
> ---
> Changelog v3..v4:
>
> o No changes.
> ---
> kernel/sched/sched.h | 2 +-
> 1 file changed, 1 insertion(+), 1 deletion(-)
>
> diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h
> index 953d89d71804..c4fc7726f82a 100644
> --- a/kernel/sched/sched.h
> +++ b/kernel/sched/sched.h
> @@ -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());
> + WARN_ON_ONCE(!rcu_read_lock_any_held());
Should we perhaps make that:
lockdep_assert(rcu_read_lock_any_held());
?