[PATCH 0/12] Expediting normal RCU callbacks

"Paul E. McKenney" <[email protected]> Thu, 30 Jul 2026 17:57:26 -0700
Newsgroups org.kernel.vger.rcu,org.kernel.vger.linux-kernel
Message-ID <58bcd561-0520-43ff-95b0-1ed10e1e3bff@paulmck-laptop>
Hello!

This series advances normal RCU callbacks when an expedited RCU grace
period elapses, thus reducing memory-reclamation latency.  This allows
synchronize_rcu_expedited() to be used to speed up reclamation of
RCU-protected memory.  The series is as follows:

1.	Remove unused rdp parameter from trace_rcu_this_gp(), courtesy
	of Joel Fernandes.

2.	Rename struct rcu_gp_oldstate to rcu_gp_seq, courtesy of
	Puranjay Mohan.

3.	Add SRCU and Tasks RCU wrapper functions, courtesy of Puranjay
	Mohan.

4.	Factor out rcu_segcblist_advance_compact() helper, courtesy of
	Puranjay Mohan.

5.	Track segment grace periods with struct rcu_gp_seq, courtesy of
	Puranjay Mohan.

6.	Add RCU_GET_STATE_NOT_TRACKED for subsystems without expedited
	GPs, courtesy of Puranjay Mohan.

7.	Enable RCU callbacks to benefit from expedited grace periods,
	courtesy of Puranjay Mohan.

8.	Update comments for gp_seq and expedited GP tracking, courtesy
	of Puranjay Mohan.

9.	Wake NOCB rcuog kthreads on expedited grace period completion,
	courtesy of Puranjay Mohan.

10.	Detect expedited grace period completion in rcu_pending(),
	courtesy of Puranjay Mohan.

11.	Advance callbacks for expedited GP completion in rcu_core(),
	courtesy of Puranjay Mohan.

12.	Add concurrent expedited GP threads for callback scaling tests,
	courtesy of Puranjay Mohan.

						Thanx, Paul

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

 b/include/linux/rcu_segcblist.h |    2 
 b/include/linux/rcupdate.h      |   13 ++-
 b/include/linux/rcupdate_wait.h |    2 
 b/include/linux/rcutiny.h       |   36 +++-----
 b/include/linux/rcutree.h       |   29 ++----
 b/include/trace/events/rcu.h    |    5 -
 b/kernel/rcu/rcu.h              |   13 ++-
 b/kernel/rcu/rcu_segcblist.c    |   10 ++
 b/kernel/rcu/rcu_segcblist.h    |    2 
 b/kernel/rcu/rcuscale.c         |   84 +++++++++++++++++++
 b/kernel/rcu/rcutorture.c       |   30 +++----
 b/kernel/rcu/srcutree.c         |   14 +--
 b/kernel/rcu/tasks.h            |    8 -
 b/kernel/rcu/tiny.c             |    4 
 b/kernel/rcu/tree.c             |   23 ++---
 b/kernel/rcu/tree.h             |    3 
 b/kernel/rcu/tree_exp.h         |   18 ++--
 b/kernel/rcu/tree_nocb.h        |    4 
 b/mm/slab_common.c              |    6 -
 include/linux/rcu_segcblist.h   |   14 +--
 kernel/rcu/rcu_segcblist.c      |  147 ++++++++++++++++++++++------------
 kernel/rcu/rcu_segcblist.h      |    8 -
 kernel/rcu/tree.c               |  171 +++++++++++++++++++++++++---------------
 kernel/rcu/tree_exp.h           |    2 
 kernel/rcu/tree_nocb.h          |  138 ++++++++++++++++++++++++--------
 25 files changed, 528 insertions(+), 258 deletions(-)