On Sat, 12 Sep 2026 15:31:24 -0700
"Paul E. McKenney" [off-list ref] wrote:
On Sat, Sep 12, 2026 at 10:14:00PM +0100, David Laight wrote:
quoted
On Sat, 12 Sep 2026 11:03:34 -0700
"Paul E. McKenney" [off-list ref] wrote:
quoted
In the old kernels, yes, we have current->trc_reader_nesting++.
In the newer kernels, Tasks Trace RCU is instead implemented in terms
of SRCU-fast, which instead increments per-CPU counters. Which among
other thins is a bit faster and does not need to hook into the scheduler.
Isn't that rather architecture dependant?
It is fine on x86, but on arm incrementing a per-cpu variable is
significantly expensive.
Last I heard, slow ARM increments of per-CPU variables were to be a
transitory phenomemon. Plus changes late last year greatly sped up the
per-CPU increment operations.
There are some unapplied patches to improve per-cpu operations for both
arm64 and s390.
Without those preemption has to be disabled (in current->xxx) which requires
a conditional call in the preempt enable path.
David
Plus this change removed some hundreds
of lines of RCU code.
Thanx, Paul