Merge tag 'rcu.2022.09.30a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu
Pull RCU updates from Paul McKenney: - Documentation updates. This is the first in a series from an ongoing review of the RCU documentation. "Why are people thinking -that- about RCU? Oh. Because that is an entirely reasonable interpretation of its documentation." - Miscellaneous fixes. - Improved memory allocation and heuristics. - Improve rcu_nocbs diagnostic output. - Add full-sized polled RCU grace period state values. These are the same size as an rcu_head structure, which is double that of the traditional unsigned long state values that may still be obtained from et_state_synchronize_rcu(). The added size avoids missing overlapping grace periods. This benefit is that call_rcu() can be replaced by polling, which can be attractive in situations where RCU-protected data is aged out of memory. Early in the series, the size of this state value is three unsigned longs. Later in the series, the fastpaths in synchronize_rcu() and synchronize_rcu_expedited() are reworked to permit the full state to be represented by only two unsigned longs. This reworking slows these two functions down in SMP kernels running either on single-CPU systems or on systems with all but one CPU offlined, but this should not be a significant problem. And if it somehow becomes a problem in some yet-as-unforeseen situations, three-value state values can be provided for only those situations. Finally, a pair of functions named same_state_synchronize_rcu() and same_state_synchronize_rcu_full() allow grace-period state values to be compared for equality. This permits users to maintain lists of data structures having the same state value, removing the need for per-data-structure grace-period state values, thus decreasing memory footprint. - Polled SRCU grace-period updates, including adding tests to rcutorture and reducing the incidence of Tiny SRCU grace-period-state counter wrap. - Improve Tasks RCU diagnostics and quiescent-state detection. * tag 'rcu.2022.09.30a' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu: (55 commits) rcutorture: Use the barrier operation specified by cur_ops rcu-tasks: Make RCU Tasks Trace check for userspace execution rcu-tasks: Ensure RCU Tasks Trace loops have quiescent states rcu-tasks: Convert RCU_LOCKDEP_WARN() to WARN_ONCE() srcu: Make Tiny SRCU use full-sized grace-period counters srcu: Make Tiny SRCU poll_state_synchronize_srcu() more precise srcu: Add GP and maximum requested GP to Tiny SRCU rcutorture output rcutorture: Make "srcud" option also test polled grace-period API rcutorture: Limit read-side polling-API testing rcu: Add functions to compare grace-period state values rcutorture: Expand rcu_torture_write_types() first "if" statement rcutorture: Use 1-suffixed variable in rcu_torture_write_types() check rcu: Make synchronize_rcu() fastpath update only boot-CPU counters rcutorture: Adjust rcu_poll_need_2gp() for rcu_gp_oldstate field removal rcu: Remove ->rgos_polled field from rcu_gp_oldstate structure rcu: Make synchronize_rcu_expedited() fast path update .expedited_sequence rcu: Remove expedited grace-period fast-path forward-progress helper rcu: Make synchronize_rcu() fast path update ->gp_seq counters rcu-tasks: Remove grace-period fast-path rcu-tasks helper rcu: Set rcu_data structures' initial ->gpwrap value to true ...
Showing
- Documentation/RCU/checklist.rst 12 additions, 3 deletionsDocumentation/RCU/checklist.rst
- Documentation/RCU/rcu_dereference.rst 10 additions, 4 deletionsDocumentation/RCU/rcu_dereference.rst
- Documentation/RCU/whatisRCU.rst 30 additions, 17 deletionsDocumentation/RCU/whatisRCU.rst
- include/linux/rcupdate.h 37 additions, 5 deletionsinclude/linux/rcupdate.h
- include/linux/rcutiny.h 50 additions, 0 deletionsinclude/linux/rcutiny.h
- include/linux/rcutree.h 40 additions, 0 deletionsinclude/linux/rcutree.h
- include/linux/srcutiny.h 6 additions, 4 deletionsinclude/linux/srcutiny.h
- kernel/rcu/rcutorture.c 248 additions, 42 deletionskernel/rcu/rcutorture.c
- kernel/rcu/srcutiny.c 7 additions, 7 deletionskernel/rcu/srcutiny.c
- kernel/rcu/tasks.h 4 additions, 1 deletionkernel/rcu/tasks.h
- kernel/rcu/tiny.c 26 additions, 1 deletionkernel/rcu/tiny.c
- kernel/rcu/tree.c 252 additions, 78 deletionskernel/rcu/tree.c
- kernel/rcu/tree_exp.h 54 additions, 3 deletionskernel/rcu/tree_exp.h
- kernel/rcu/tree_nocb.h 5 additions, 5 deletionskernel/rcu/tree_nocb.h
- kernel/rcu/tree_plugin.h 15 additions, 11 deletionskernel/rcu/tree_plugin.h
- kernel/rcu/tree_stall.h 2 additions, 3 deletionskernel/rcu/tree_stall.h
- kernel/sched/core.c 14 additions, 0 deletionskernel/sched/core.c
- kernel/smp.c 1 addition, 2 deletionskernel/smp.c
Loading
Please register or sign in to comment