On Thu, Aug 05, 2021 at 09:03:37AM -0700, Paul E. McKenney wrote: > On Thu, Aug 05, 2021 at 10:01:23AM +0200, Juri Lelli wrote: > > 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, 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. > > > > Signed-off-by: Juri Lelli <juri.lelli@xxxxxxxxxx> > > Makes sense to me! > > But would another of the -rt people be willing to give an Acked-by? > For example, maybe they would prefer this kernel boot parameter to be > exposed only if (!PREEMPT_RT || NO_HZ_FULL). Or are there !NO_HZ_FULL > situations where rcu_normal_after_boot makes sense? Ah, and this will also need to be reflected in the WARN_ON_ONCE() in synchronize_rcu_expedited_wait() in kernel/rcu/tree_exp.h. Thanx, Paul > > --- > > kernel/rcu/update.c | 2 -- > > 1 file changed, 2 deletions(-) > > > > diff --git a/kernel/rcu/update.c b/kernel/rcu/update.c > > index c21b38cc25e9..0fdbf937edac 100644 > > --- a/kernel/rcu/update.c > > +++ b/kernel/rcu/update.c > > @@ -57,9 +57,7 @@ > > module_param(rcu_expedited, int, 0); > > module_param(rcu_normal, int, 0); > > static int rcu_normal_after_boot = IS_ENABLED(CONFIG_PREEMPT_RT); > > -#ifndef CONFIG_PREEMPT_RT > > module_param(rcu_normal_after_boot, int, 0); > > -#endif > > #endif /* #ifndef CONFIG_TINY_RCU */ > > > > #ifdef CONFIG_DEBUG_LOCK_ALLOC > > -- > > 2.31.1 > >