[PATCH v2 0/5] Remove SRCU-lite in favor of SRCU-fast

From: Paul E. McKenney
Date: Tue Jul 01 2025 - 20:23:13 EST


Hello!

This series removes the deprecated SRCU-lite flavor.

Both SRCU-lite and SRCU-fast provide faster readers by dropping the
smp_mb() call from their lock and unlock primitives. The price of this
is a pair of added RCU grace periods during the SRCU grace period.

SRCU-fast also adds NMI safety for architectures that have NMIs but do
not have NMI-safe per-CPU operations. In addition, srcu_read_lock_fast()
returns a per-CPU pointer rather than an integer, which provides a further
speedup compared to SRCU-lite by getting rid of array-index calculations.

There is a trivial mapping from the SRCU-lite API to that of SRCU-fast,
so we do not expect any transition issues. In addition, while SRCU-lite
remains in the kernel, checkpatch.pl will warn about added SRCU-lite
use cases.

Further read-side speedups are possible, but they amount to only about
half a nanosecond out of about two nanoseconds (measured on my x86
laptop), and they might require some changes to existing SRCU code.
These changes are trivial, but we need to see a solid need for the
additional performance before inconveniencing existing users.

1. Remove support for SRCU-lite.

2. Remove SRCU-lite scenarios.

3. Remove support for SRCU-lite.

4. Remove SRCU-lite implementation.

5. Remove SRCU-lite deprecation.


Changes since v1:

o Add short explanation of SRCU-lite and SRCU-fast.

Thanx, Paul

------------------------------------------------------------------------

b/include/linux/srcu.h | 2
b/include/linux/srcutiny.h | 3
b/include/linux/srcutree.h | 38 ----------
b/kernel/rcu/rcutorture.c | 7 -
b/kernel/rcu/refscale.c | 32 --------
b/scripts/checkpatch.pl | 2
b/tools/testing/selftests/rcutorture/configs/rcu/CFLIST | 1
include/linux/srcu.h | 47 -------------
tools/testing/selftests/rcutorture/configs/rcu/SRCU-L | 10 --
tools/testing/selftests/rcutorture/configs/rcu/SRCU-L.boot | 3
10 files changed, 4 insertions(+), 141 deletions(-)