Hello! This series contains SRCU updates, primarily reducing the srcu_struct structure's infamous memory footprint. 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. Make Tree SRCU able to operate without snp_node array. 5. Dynamically allocate srcu_node array. 6. Add size-state transitioning code. 7. Make rcutorture dump the SRCU size state. 8. Compute snp_seq earlier in srcu_funnel_gp_start(). 9. Use invalid initial value for srcu_node GP sequence numbers. 10. Ensure snp nodes tree is fully initialized before traversal, courtesy of Neeraj Upadhyay. 11. Add boot-time control over srcu_node array allocation. 12. Use export for srcu_struct defined by DEFINE_STATIC_SRCU(), courtesy of Alexander Aring. 13. Avoid NULL dereference in srcu_torture_stats_print(). 14. Prevent cleanup_srcu_struct() from freeing non-dynamic ->sda. 15. Explain srcu_funnel_gp_start() call to list_add() is safe. 16. Create concurrency-safe helper for initiating size transition. 17. Add contention-triggered addition of srcu_node tree. 18. Automatically determine size-transition strategy at boot. 19. Add contention check to call_srcu() srcu_data ->lock acquisition. 20. Prevent expedited GPs and blocking readers from consuming CPU. 21. Drop needless initialization of sdp in srcu_gp_start(), courtesy of Lukas Bulwahn. Thanx, Paul ------------------------------------------------------------------------ Documentation/admin-guide/kernel-parameters.txt | 18 b/Documentation/admin-guide/kernel-parameters.txt | 13 b/include/linux/srcutree.h | 8 b/kernel/rcu/srcutree.c | 6 include/linux/srcutree.h | 24 kernel/rcu/srcutree.c | 751 +++++++++++++++------- 6 files changed, 587 insertions(+), 233 deletions(-)