[PATCH 0/12] Expediting normal RCU callbacks

From: Paul E. McKenney

Date: Thu Jul 30 2026 - 20:58:21 EST


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(-)