On Wed, Jul 28, 2021 at 02:12:05PM -0400, Mathieu Desnoyers wrote: > ----- On Jul 28, 2021, at 1:58 PM, Linus Torvalds torvalds@xxxxxxxxxxxxxxxxxxxx wrote: > > > On Wed, Jul 28, 2021 at 10:37 AM Paul E. McKenney <paulmck@xxxxxxxxxx> wrote: > >> > >> +/* > >> + * Increment the current CPU's rcu_data structure's ->dynticks field > >> + * with ordering. Return the new value. > >> + */ > >> +static noinstr unsigned long rcu_dynticks_inc(int incby) > >> +{ > >> + return arch_atomic_add_return(incby, this_cpu_ptr(&rcu_data.dynticks)); > >> +} > > > > Maybe inline? > > > > But more I reacted to how we sadly don't have percpu atomics. They'd > > be fairly easy to add on x86, but I guess it's not a huge deal. > > Are the percpu atomics you have in mind different from what is found in > Documentation/core-api/this_cpu_ops.rst ? > > Namely this_cpu_add_return(pcp, val) in this case. > > I must be missing something subtle because AFAIU those are already > available. Those per-cpu atomics don't provide any memory ordering > though, which may be why those are not used here. Good point, but this code does indeed need the ordering. It also must support the occasional off-CPU access. Thanx, Paul