Hello, Linus,
Please pull this RCU update:
git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux tags/rcu.2026.08.18a
# HEAD: 9cc63f8bcd560c760d0b12e15bba8f81c86237cf: Merge branches
'expcb.2026.07.24a', 'misc.2026.07.30a', 'rcu-tasks.2026.07.30a',
'srcu.2026.08.11a' and 'torture.2026.08.14a' into HEAD (2026-08-14 15:43:51
-0700)
----------------------------------------------------------------
RCU updates:
Make expedited grace periods expedite normal RCU callbacks
Miscellaneous fixes:
* Improve diagnostic output with character task states.
* Mark accesses to inform KCSAN of concurrency design.
* Move from kmalloc() to kmalloc_obj().
* Documentation updates.
* Improve handling of RCU deferred quiescent states.
* Clean up unused function arguments and structure fields.
* Reduce show_rcu_gp_kthreads() stack space.
Tasks RCU updates:
* Clean up after SRCU re-implementation of Tasks Trace RCU.
* Mark accesses to inform KCSAN of concurrency design.
* Add ->lazy_timer status to diagnostic output.
* Remove an unnecessary memory barrier.
* Fix a data race, courtesy of KCSAN.
* Documentation updates.
* Convert cond_resched_tasks_rcu_qs() from macro to static inline
function.
SRCU updates:
* Add Rust helpers for SRCU.
* Avoid losing queued work at cleanup_srcu_struct() time.
Torture-test updates:
* Preparation work for immediate RCU priority deboosting.
* Test RCU readers from real interrupt handlers (as opposed to softirq).
* Simplify code through use of cpumask_next_wrap().
* Improve diagnostic output with character task states.
* Add rcutorture.nwriters parameter to allow lightweight stall testing,
and rcutorture.stall_only to make doing so easier.
* Test an RCU Tasks Trace grace period implying an RCU grace period.
* Make RCU Tasks Trace torturing track reader batches.
* Fix a data race, courtesy of KCSAN.
* Plug a shuffle_tmp_mask memory leak on kthread spawn failure.
----------------------------------------------------------------
Itai Handler (1):
rcu: Mark accesses to ->rcu_urgent_qs and ->rcu_need_heavy_qs
Joel Fernandes (6):
rcu: Remove unused rdp parameter from trace_rcu_this_gp()
rcu: introduce rcu_defer_qs_clear() helper
rcu: clear defer_qs_pending in deferred-QS bail when nesting > 0
rcu: Remove unused expedited_need_qs field from rcu_state
rcu: Remove unused func parameter from callback-enqueue functions
torture: Don't leak shuffle_tmp_mask when shuffler kthread fails to start
Kunwu Chan (2):
rcu: Use task_state_to_char() in stall-warning prints
rcutorture: Use task_state_to_char() for task-state reporting
Manuel Ebner (2):
doc: RCU: Adopt new coding style of type-aware kmalloc-family - part 2/2
doc: RCU: Fix brackets
Onur Özkan (5):
srcu: make init_srcu_struct() consistently wrap __init_srcu_struct()
rust: helpers: add SRCU helpers
srcu: expose srcu_readers_active()
rust: sync: add SRCU abstraction
MAINTAINERS: add Rust SRCU files to SRCU entry
Paul E. McKenney (23):
rcu-tasks: TASKS_TRACE_RCU doesn't need IRQ_WORK
rcutorture: Abstract reader-segment dump into rcu_torture_dump_read_segs()
rcu: Mark __rcu_access_pointer() as context_unsafe()
rcu-tasks: Apply READ_ONCE() and WRITE_ONCE() to fix data race
rcu: Use this_cpu_{read,write}() for ->cpu_no_qs.b.exp
rcu: Use WRITE_ONCE() for ->rcu_need_heavy_qs
rcu: Mark accesses to rdp->rcu_cpu_has_work
rcu-tasks: Fix IRQ read lock/unlock data race
rcu: Mark interrupts-enabled accesses to rdp->cpu_no_qs.b.norm
rcu: Mark interrupts-enabled accesses to rdp->cpu_no_qs.s
rcu-tasks: Convert cond_resched_tasks_rcu_qs() to static inline
rcutorture: Check for immediate deboosting at reader end
rcutorture: Test RCU readers from hardware interrupt handlers
rcutorture: Use cpumask_next_wrap() in rcu_torture_preempt()
rcutorture: Add nwriters module parameter
rcutorture: Add a stall_only module parameter
rcutorture: Test RCU Tasks Trace GP implying RCU GP
rcutorture: Make RCU Tasks Trace track Reader Batches
rcutorture: Use this_cpu_inc() for rcu_torture_count[] and
rcu_torture_batch[]
rcutorture: Announce declining to forward-progress test
rcutorture: Make {,s}rcu_read_delay() better handle forward-progress
testing
rcu: Add closing parenthesis in comment in rcu_read_unlock_strict()
Merge branches 'expcb.2026.07.24a', 'misc.2026.07.30a',
'rcu-tasks.2026.07.30a', 'srcu.2026.08.11a' and 'torture.2026.08.14a' into HEAD
Puranjay Mohan (11):
rcu: Rename struct rcu_gp_oldstate to rcu_gp_seq
rcu/segcblist: Add SRCU and Tasks RCU wrapper functions
rcu/segcblist: Factor out rcu_segcblist_advance_compact() helper
rcu/segcblist: Track segment grace periods with struct rcu_gp_seq
rcu: Add RCU_GET_STATE_NOT_TRACKED for subsystems without expedited GPs
rcu: Enable RCU callbacks to benefit from expedited grace periods
rcu: Update comments for gp_seq and expedited GP tracking
rcu: Wake NOCB rcuog kthreads on expedited grace period completion
rcu: Detect expedited grace period completion in rcu_pending()
rcu: Advance callbacks for expedited GP completion in rcu_core()
rcuscale: Add concurrent expedited GP threads for callback scaling tests
Zqiang (10):
rcu-tasks: Remove unused struct rcu_tasks's->n_ipis_fails variables
rcu-tasks: Dump rcu tasks status when the boot-test failed
rcu-tasks: Remove smp_mb() in rcu_spawn_tasks_kthread_generic()
rcu-tasks: Update comments in call_rcu_tasks_generic()
rcu-tasks: Dump rtpcp->lazy_timer status in
show_rcu_tasks_generic_gp_kthread()
rcu: Remove unused rdp parameter from rcu_check_gp_start_stall()
rcu: Reduce stack usage in show_rcu_gp_kthreads()
rcu-tasks: Rename tasks_rcu_exit_srcu_stall_timer to
tasks_rcu_exit_stall_timer
rcu-tasks: Fix some comments for call_rcu_tasks() and
call_rcu_tasks_rude()
srcu: Queue sdp->work when the delay timer is successfully deleted
.../Expedited-Grace-Periods.rst | 2 +-
.../RCU/Design/Memory-Ordering/TreeRCU-gp.svg | 2 +-
.../RCU/Design/Memory-Ordering/TreeRCU-qs.svg | 2 +-
.../RCU/Design/Requirements/Requirements.rst | 2 +-
Documentation/RCU/rcu_dereference.rst | 4 +-
Documentation/admin-guide/kernel-parameters.txt | 14 +
MAINTAINERS | 3 +
include/linux/rcu_segcblist.h | 16 +-
include/linux/rcupdate.h | 29 +-
include/linux/rcupdate_trace.h | 19 +-
include/linux/rcupdate_wait.h | 2 +-
include/linux/rcutiny.h | 36 +-
include/linux/rcutree.h | 29 +-
include/linux/srcu.h | 29 +-
include/linux/srcutiny.h | 13 +
include/linux/srcutree.h | 24 ++
include/trace/events/rcu.h | 5 +-
kernel/rcu/Kconfig | 1 -
kernel/rcu/rcu.h | 20 +-
kernel/rcu/rcu_segcblist.c | 139 +++++---
kernel/rcu/rcu_segcblist.h | 8 +-
kernel/rcu/rcuscale.c | 84 ++++-
kernel/rcu/rcutorture.c | 374 ++++++++++++++-------
kernel/rcu/srcutiny.c | 14 +-
kernel/rcu/srcutree.c | 57 ++--
kernel/rcu/tasks.h | 62 ++--
kernel/rcu/tiny.c | 4 +-
kernel/rcu/tree.c | 195 +++++++----
kernel/rcu/tree.h | 14 +-
kernel/rcu/tree_exp.h | 24 +-
kernel/rcu/tree_nocb.h | 126 +++++--
kernel/rcu/tree_plugin.h | 93 ++++-
kernel/rcu/tree_stall.h | 64 ++--
kernel/torture.c | 7 +-
mm/slab_common.c | 6 +-
rust/helpers/helpers.c | 1 +
rust/helpers/srcu.c | 35 ++
rust/kernel/sync.rs | 2 +
rust/kernel/sync/srcu.rs | 171 ++++++++++
39 files changed, 1251 insertions(+), 481 deletions(-)
create mode 100644 rust/helpers/srcu.c
create mode 100644 rust/kernel/sync/srcu.rs