On Wed, Sep 15, 2021 at 04:33:40PM -0700, Paul E. McKenney wrote: > From: Juri Lelli <juri.lelli@xxxxxxxxxx> > > Certain configurations (e.g., systems that make heavy use of netns) > need to use synchronize_rcu_expedited() to service RCU grace periods > even after boot. > > Even though synchronize_rcu_expedited() has been traditionally > considered harmful for RT for the heavy use of IPIs, it is perfectly > usable under certain conditions (e.g. nohz_full). > > Make rcupdate.rcu_normal_after_boot= again writeable on RT (if NO_HZ_ > FULL is defined), but keep its default value to 1 (enabled) to avoid > regressions. Users who need synchronize_rcu_expedited() will boot with > rcupdate.rcu_normal_after_ boot=0 in the kernel cmdline. > > Reflect the change in synchronize_rcu_expedited_wait() by removing the > WARN related to CONFIG_PREEMPT_RT. > > Signed-off-by: Juri Lelli <juri.lelli@xxxxxxxxxx> > Signed-off-by: Paul E. McKenney <paulmck@xxxxxxxxxx> > --- > kernel/rcu/tree_exp.h | 1 - > kernel/rcu/update.c | 2 +- > 2 files changed, 1 insertion(+), 2 deletions(-) > > diff --git a/kernel/rcu/tree_exp.h b/kernel/rcu/tree_exp.h > index 2796084ef85a..d9e4f8eb9ae2 100644 > --- a/kernel/rcu/tree_exp.h > +++ b/kernel/rcu/tree_exp.h > @@ -512,7 +512,6 @@ static void synchronize_rcu_expedited_wait(void) > j = READ_ONCE(jiffies_till_first_fqs); > if (synchronize_rcu_expedited_wait_once(j + HZ)) > return; > - WARN_ON_ONCE(IS_ENABLED(CONFIG_PREEMPT_RT)); > } > > for (;;) { Urgh... I really don't like this. That would force RT applications to always use NOHZ_FULL which isn't always possible or desired. WTH does that netns crud need expedited so much?