[PATCH v3 rcu 0/13] SRCU-lite changes for v6.13

From: Paul E. McKenney
Date: Tue Oct 15 2024 - 12:11:35 EST


Hello!

This v3 series adds support and testing for srcu_read_lock_lite()
and srcu_read_unlock_lite(), which avoid smp_mb(), but add a couple of
synchronize_rcu() calls to the grace-period processing and may only be
used where RCU is watching.

1. Rename srcu_might_be_idle() to srcu_should_expedite().

2. Introduce srcu_gp_is_expedited() helper function.

3. Renaming in preparation for additional reader flavor.

4. Bit manipulation changes for additional reader flavor.

5. Standardize srcu_data pointers to "sdp" and similar.

6. Improve srcu_read_lock{,_nmisafe}() comments.

7. Create CPP macros for normal and NMI-safe SRCU readers.

8. Add srcu_read_lock_lite() and srcu_read_unlock_lite().

9. Allow inlining of __srcu_read_{,un}lock_lite().

10. Expand RCUTORTURE_RDR_MASK_[12] to eight bits.

11. Add reader_flavor parameter for SRCU readers.

12. Add srcu_read_lock_lite() support to rcutorture.reader_flavor.

13. Add light-weight SRCU scenario.

14. Add srcu_read_lock_lite() support using "srcu-lite".

15. Improve srcu_read_lock_lite() kernel-doc comment.

Changes since v2:

o Apply acked-by tag.

o Split commit per Neeraj Upadhyay feedback.

Changes since v1:

o Apply reviewed-by tag.

o Link to performance data.

o Add commit improving kernel-doc comment.

o Pull out into separate branch to avoid dependency on an otherwise
unrelated refscale commit.

Thanx, Paul

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

Documentation/admin-guide/kernel-parameters.txt | 4
b/Documentation/admin-guide/kernel-parameters.txt | 8
b/include/linux/srcu.h | 21 -
b/include/linux/srcutree.h | 2
b/kernel/rcu/rcutorture.c | 28 -
b/kernel/rcu/refscale.c | 51 ++
b/kernel/rcu/srcutree.c | 16
b/tools/testing/selftests/rcutorture/configs/rcu/CFLIST | 1
b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-L | 10
b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-L.boot | 3
b/tools/testing/selftests/rcutorture/configs/rcu/SRCU-N.boot | 1
b/tools/testing/selftests/rcutorture/configs/rcu/TREE10 | 2
include/linux/srcu.h | 89 +++-
include/linux/srcutree.h | 44 ++
kernel/rcu/rcutorture.c | 37 +
kernel/rcu/srcutree.c | 207 ++++++-----
16 files changed, 363 insertions(+), 161 deletions(-)