Re: [RFC PATCH 48/86] rcu: handle quiescent states for PREEMPT_RCU=n

From: Paul E. McKenney
Date: Wed Dec 06 2023 - 23:37:21 EST


On Wed, Dec 06, 2023 at 09:10:22PM -0500, Steven Rostedt wrote:
> On Wed, 06 Dec 2023 17:31:30 -0800
> Ankur Arora <ankur.a.arora@xxxxxxxxxx> wrote:
>
> > ---
> > diff --git a/include/linux/preempt.h b/include/linux/preempt.h
> > index 9aa6358a1a16..d8139cda8814 100644
> > --- a/include/linux/preempt.h
> > +++ b/include/linux/preempt.h
> > @@ -226,9 +226,11 @@ do { \
> > #ifdef CONFIG_PREEMPTION
> > #define preempt_enable() \
> > do { \
> > barrier(); \
> > if (unlikely(preempt_count_dec_and_test())) \
> > __preempt_schedule(); \
> > + else if (unlikely(raw_cpu_read(rcu_data.rcu_urgent_qs))) \
>
> Shouldn't this still have the:
>
> else if (!IS_ENABLED(CONFIG_PREEMPT_RCU) && \
>
> That is, is it needed when PREEMPT_RCU is set?

Given that PREEMPT_RCU has been getting along fine without it, I agree
with Steve on this one. Unless and until someone demonstrates otherwise,
but such a demonstration would almost certainly affect current code,
not just the lazy-preemption changes.

Thanx, Paul

> -- Steve
>
>
> > + rcu_all_qs_check();
> > } while (0)
> >
> > #define preempt_enable_notrace() \