On Fri, Apr 02, 2021 at 01:47:02AM +0200, Frederic Weisbecker wrote: > When an ssp has already started a grace period and queued an early work > to flush after SRCU workqueues are created, we expect the ssp to be > properly initialized already. So we can skip this step at this stage. > > Signed-off-by: Frederic Weisbecker <frede...@kernel.org> > Cc: Boqun Feng <boqun.f...@gmail.com> > Cc: Lai Jiangshan <jiangshan...@gmail.com> > Cc: Neeraj Upadhyay <neer...@codeaurora.org> > Cc: Josh Triplett <j...@joshtriplett.org> > Cc: Joel Fernandes <j...@joelfernandes.org> > Cc: Uladzislau Rezki <ure...@gmail.com> > --- > kernel/rcu/srcutree.c | 1 - > 1 file changed, 1 deletion(-) > > diff --git a/kernel/rcu/srcutree.c b/kernel/rcu/srcutree.c > index 036ff5499ad5..7197156418e4 100644 > --- a/kernel/rcu/srcutree.c > +++ b/kernel/rcu/srcutree.c > @@ -1396,7 +1396,6 @@ void __init srcu_init(void) > while (!list_empty(&srcu_boot_list)) { > ssp = list_first_entry(&srcu_boot_list, struct srcu_struct, > work.work.entry); > - check_init_srcu_struct(ssp);
You lost me on this one. What happens if the only pre-initialization invocation on the statically allocated srcu_struct pointed to by ssp was call_srcu()? I am not seeing how the initialization has already happened in that case. What am I missing here? Thanx, Paul > list_del_init(&ssp->work.work.entry); > queue_work(rcu_gp_wq, &ssp->work.work); > } > -- > 2.25.1 >