[PATCH rcu 0/5] Extricate rcu_barrier() from CPU hotplug

From: Paul E. McKenney
Date: Fri Feb 04 2022 - 18:20:31 EST


Hello!

This series reworks rcu_barrier() to remove its calls to cpus_read_lock()
and cpus_read_unlock(). This improves modularity, gets rid of an
acquisition of a wide-spectrum synchronization mechanism, and allows
rcu_barrier() to be invoked from CPU-hotplug notifiers that permit
blocking. Not that this last is necessarily a good idea.

1. Kill rnp->ofl_seq and use only rcu_state.ofl_lock for exclusion,
courtesy of David Woodhouse.

2. Refactor rcu_barrier() empty-list handling.

3. Rework rcu_barrier() and callback-migration logic.

4. Make rcu_barrier() no longer block CPU-hotplug operations.

5. Create and use an rcu_rdp_cpu_online().

Thanx, Paul

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

b/include/trace/events/rcu.h | 9 +-
b/kernel/rcu/tree.c | 71 ++++++++++----------
b/kernel/rcu/tree.h | 4 -
b/kernel/rcu/tree_plugin.h | 6 -
kernel/rcu/tree.c | 151 +++++++++++++++++++++++++++----------------
kernel/rcu/tree.h | 5 +
6 files changed, 143 insertions(+), 103 deletions(-)