Re: [PATCH v3 5/7] rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y
From: Frederic Weisbecker
Date: Fri Dec 13 2024 - 08:59:45 EST
Le Thu, Dec 12, 2024 at 08:06:56PM -0800, Ankur Arora a écrit :
> With PREEMPT_RCU=n, cond_resched() provides urgently needed quiescent
> states for read-side critical sections via rcu_all_qs().
> One reason why this was needed: lacking preempt-count, the tick
> handler has no way of knowing whether it is executing in a
> read-side critical section or not.
>
> With (PREEMPT_LAZY=y, PREEMPT_DYNAMIC=n), we get (PREEMPT_COUNT=y,
> PREEMPT_RCU=n). In this configuration cond_resched() is a stub and
> does not provide quiescent states via rcu_all_qs().
> (PREEMPT_RCU=y provides this information via rcu_read_unlock() and
> its nesting counter.)
>
> So, use the availability of preempt_count() to report quiescent states
> in rcu_flavor_sched_clock_irq().
>
> Suggested-by: Paul E. McKenney <paulmck@xxxxxxxxxx>
> Reviewed-by: Sebastian Andrzej Siewior <bigeasy@xxxxxxxxxxxxx>
> Signed-off-by: Ankur Arora <ankur.a.arora@xxxxxxxxxx>
Reviewed-by: Frederic Weisbecker <frederic@xxxxxxxxxx>