Hello, Linus,
Once the merge window opens, please pull this RCU update:
git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux.git
tags/rcu.2026.10.12b
# HEAD: d9011419496a3dc6b455b5308846684c63c18de5: Merge branches
'misc.2026.10.06a' and 'torture.2026.10.12a' into HEAD (2026-10-12 16:53:20
-0700)
----------------------------------------------------------------
RCU updates:
Execution contexts and call_rcu() and call_srcu():
* Make call_rcu() and call_srcu invocable from NMI handlers and while
holding scheduler locks (using irq-work handlers).
* Add rcutorture and BPF tests calling these functions from these
contexts.
* Disable rcutorture overload testing for RCU readers that are "fragile",
that is, that do not either disable preemption or have some form of
RCU priority boosting.
SRCU updates:
* Add an atomic SRCU where readers run with preemption disabled and
grace periods can be invoked from atomic contexts. David Woodhouse
has a patch series exploiting this for GPC.
* Add torture and lockdep tests for atomic SRCU.
* Add numerous optimizations for atomic SRCU based on the fact that it
does not have callbacks, for example, eliminating any transition to
"big" srcu_struct structures even on systems that configure these to
happen at initialization time.
Additional torture-test updates:
* Fix a divide-by-zero bug in forward-progress testing.
* Synchronously wait for all IRQ-queued callbacks to complete.
* Allow alternative "ssh" commands to be specified for use by
kvm-remote.sh.
* Fix kvm-again.sh re-run failure on PowerPC.
* Add additional lockdep testing for atomic SRCU.
* Fix error double-counting in srcu_lockdep.sh.
* Add atomic SRCU cross-CPU IRQ context mismatch testing, with the
* trick being that the atomic SRCU readers context must be at least as
strict as that of the atomic SRCU grace-period wait. So for example,
if the readers have IRQs disabled, so must the grace-period wait.
Miscellaneous updates:
* Update stallwarn.rst documentation for the re-implementation of RCU
Tasks Trace in terms of SRCU.
* Fix the lazy-callback shrink scanner budget computation so that it
honors the reclaim budget.
* Avoid panicking on RCU CPU stalls that end before the warning can
be printed.
* Add "running" and "boosted" indications to the RCU task stall warning
output.
* People have been (incorrectly) relying on rcu_barrier() to wait for
kfree_rcu() callbacks and processing. But it turns out to be easier to
fix rcu_barrier() to meet their expectations than to fix their code to
live within the earlier rcu_barrier() specification. So rcu_barrier()
now waits on kfree_rcu() callbacks and processing.
* Disable RCU Tasks console output that track when this RCU flavor
switches between per-CPU and global callback queuing. New use cases
appeared that generated enough console traffic to cause trouble, and
no one seemed to care about these messages. For those needing those
messages, there is a new rcupdate.rcu_task_collapse_debug kernel boot
parameter.
* Fix __rcu pointer attribute handling to eliminate false positives.
* Fix typos and drop redundant #include directives.
----------------------------------------------------------------
Bradley Morgan (1):
rcu: Drop the private tick-internal.h include from tree.c
Hemanth Selam (1):
rcu: Fix typo "upto" in comment
Karl Mehltretter (1):
rcuref: Fix the rcuread_is_dead reference in rcuref_read() kernel-doc
Kunwu Chan (16):
rcutorture: Add atomic-SRCU support to torture.sh
srcutree: Add reader-free fastpath to synchronize_srcu_atomic()
srcutree: Skip callback scheduling for atomic SRCU grace periods
srcutree: Remove srcu_barrier() sleep for atomic SRCU
srcu: Restrict atomic-SRCU non_block annotation to task context
srcutree: Make init_srcu_struct_atomic() prevent transition to big
srcutree: Don't transition atomic SRCU to big in srcu_gp_end()
srcutree: Skip torture to-big transition for atomic SRCU
srcutree: Add lockdep and early-boot checks to synchronize_srcu_atomic()
srcutiny: Add lockdep and early-boot checks to synchronize_srcu_atomic()
srcutree: Preserve IRQ state in synchronize_srcu_atomic() callchain
rcutorture: Fix divide-by-zero with fwd_progress_div=1
rcutorture: Add atomic SRCU lockdep support
selftests/rcutorture: Wire atomic SRCU into srcu_lockdep.sh
selftests/rcutorture: Fix double nerrs count in srcu_lockdep.sh
rcutorture: Add atomic SRCU cross-CPU IRQ context mismatch test
Longlong Xia (1):
rcu: fix shrink budget underflow in lazy_rcu_shrink_scan
Matthias Goergens (1):
rcu: Make userspace barrier hook drain kvfree_rcu work
Paul E. McKenney (16):
doc: Update stallwarn.rst based on RCU Tasks Trace as SRCU
rcu: Don't panic on already-ended RCU CPU stalls
rcutorture: Disable fragile readers during overload testing
srcutiny: Make a Tiny SRCU grace period imply an RCU grace period
srcutree: Suppress srcu_advance_state() mutex_lock in atomic
srcutree: Suppress to-big transition for atomic SRCU
rcu: Add running and boosted indications to RCU task stall dump
rcu-tasks: Disable callback contend/collapse messages by default
srcutree: Add an atomic Tree SRCU
srcutiny: Add an atomic Tiny SRCU
rcutorture: Add support for testing synchronize_srcu_atomic()
srcutree: Disable preemption across synchronize_srcu_atomic()
srcutree: Warn if Tiny SRCU readers are preempted
srcutree: Explicitly note DEFINE_SRCU() needs for srcu_barrier()
torture: Allow specifying alternative ssh command to kvm-remote.sh
Merge branches 'misc.2026.10.06a' and 'torture.2026.10.12a' into HEAD
Puranjay Mohan (6):
rcu: Make call_rcu() safe to call from any context
rcu: Make Tiny call_rcu() safe to call from any context
srcu: Make call_srcu() safe to call from any context
srcu: Make Tiny call_srcu() safe to call from any context
rcutorture: Exercise ->call() from NMI context
selftests/bpf: Add a call_srcu() re-entry reproducer
Ricardo Ribalda (1):
rcu: Drop the address space qualifier from the dereference macros
Sebastian Andrzej Siewior (1):
srcu: Use IRQ_WORK_INIT_HARD for srcu's irq_work
Sunho Park (1):
srcu: Fix WARN_ON() for rcu_segcblist_n_cbs() in cleanup_srcu_struct()
Zhouyi Zhou (1):
rcutorture: Fix kvm-again.sh re-run failure on ppc64
Zqiang (1):
rcutorture: Synchronously wait for all rcu_torture_irq() callbacks to
complete
Documentation/RCU/stallwarn.rst | 22 +-
Documentation/admin-guide/kernel-parameters.txt | 23 +-
include/linux/compiler.h | 17 +
include/linux/rcupdate.h | 10 +-
include/linux/rcuref.h | 2 +-
include/linux/srcu.h | 83 +++-
include/linux/srcutiny.h | 18 +-
include/linux/srcutree.h | 19 +-
kernel/rcu/Kconfig | 6 +
kernel/rcu/rcu.h | 14 +
kernel/rcu/rcutorture.c | 317 ++++++++++++-
kernel/rcu/srcutiny.c | 189 +++++++-
kernel/rcu/srcutree.c | 504 ++++++++++++++++++---
kernel/rcu/tasks.h | 15 +-
kernel/rcu/tiny.c | 127 +++++-
kernel/rcu/tree.c | 164 ++++++-
kernel/rcu/tree.h | 6 +
kernel/rcu/tree_exp.h | 2 +-
kernel/rcu/tree_nocb.h | 3 +-
kernel/rcu/tree_plugin.h | 2 -
kernel/rcu/tree_stall.h | 36 +-
.../testing/selftests/bpf/prog_tests/rcu_reentry.c | 93 ++++
tools/testing/selftests/bpf/progs/rcu_reentry.c | 51 +++
.../testing/selftests/rcutorture/bin/kvm-again.sh | 11 +-
.../testing/selftests/rcutorture/bin/kvm-remote.sh | 22 +-
.../selftests/rcutorture/bin/srcu_lockdep.sh | 77 +++-
tools/testing/selftests/rcutorture/bin/torture.sh | 24 +
27 files changed, 1677 insertions(+), 180 deletions(-)
create mode 100644 tools/testing/selftests/bpf/prog_tests/rcu_reentry.c
create mode 100644 tools/testing/selftests/bpf/progs/rcu_reentry.c