[PATCH rcu 0/19] SRCU updates for v5.18

From: Paul E. McKenney
Date: Fri Feb 04 2022 - 18:39:06 EST


Hello!

This series provides SRCU updates, perhaps most notably some changes
that greatly reduce the size of the srcu_struct structure in kernels
built with large values for the CONFIG_NR_CPUS Kconfig option.

1. Tighten cleanup_srcu_struct() GP checks.

2. Fix s/is/if/ typo in srcu_node comment.

3. Make srcu_funnel_gp_start() cache ->mynode in snp_leaf.

4. Dynamically allocate srcu_node array.

5. Make Tree SRCU able to operate without snp_node array.

6. Add size-state transitioning code.

7. Make rcutorture dump the SRCU size state.

8. Add boot-time control over srcu_node array allocation.

9. Use export for srcu_struct defined by DEFINE_STATIC_SRCU(),
courtesy of Alexander Aring.

10. Compute snp_seq earlier in srcu_funnel_gp_start().

11. Use invalid initial value for srcu_node GP sequence numbers.

12. Avoid NULL dereference in srcu_torture_stats_print().

13. Prevent cleanup_srcu_struct() from freeing non-dynamic ->sda.

14. Explain srcu_funnel_gp_start() call to list_add() is safe.

15. Create concurrency-safe helper for initiating size transition.

16. Add contention-triggered addition of srcu_node tree.

17. Make srcu_size_state_name static, courtesy of Jiapeng Chong.

18. Automatically determine size-transition strategy at boot.

19. Add contention check to call_srcu() srcu_data ->lock acquisition.

Thanx, Paul

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

Documentation/admin-guide/kernel-parameters.txt | 9
b/Documentation/admin-guide/kernel-parameters.txt | 22
b/include/linux/srcutree.h | 8
b/kernel/rcu/srcutree.c | 6
include/linux/srcutree.h | 20
kernel/rcu/srcutree.c | 644 +++++++++++++++-------
6 files changed, 500 insertions(+), 209 deletions(-)