[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(-)