[<prev] [next>] [thread-next>] [day] [month] [year] [list]
Message-ID: <Z99wJFZC1XlvA4vC@Mac.home>
Date: Sat, 22 Mar 2025 19:21:24 -0700
From: Boqun Feng <boqun.feng@...il.com>
To: Linus Torvalds <torvalds@...ux-foundation.org>
Cc: "Paul E. McKenney" <paulmck@...nel.org>,
Frederic Weisbecker <frederic@...nel.org>,
Neeraj Upadhyay <neeraj.upadhyay@...nel.org>,
Joel Fernandes <joel@...lfernandes.org>,
Boqun Feng <boqun.feng@...il.com>,
Uladzislau Rezki <urezki@...il.com>, linux-kernel@...r.kernel.org,
rcu@...r.kernel.org
Subject: [GIT PULL] RCU changes for v6.15
Hi Linus,
When the merge window opens, please pull the RCU update:
The following changes since commit 2014c95afecee3e76ca4a56956a936e23283f05b:
Linux 6.14-rc1 (2025-02-02 15:39:26 -0800)
are available in the Git repository at:
git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux.git tags/rcu-next-v6.15
for you to fetch changes up to 467c890f2d1ad6de9fd1dbd196fdc8f3ee63190a:
Merge branches 'docs.2025.02.04a', 'lazypreempt.2025.03.04a', 'misc.2025.03.04a', 'srcu.2025.02.05a' and 'torture.2025.02.05a' (2025-03-04 18:47:32 -0800)
There is a small conflict with slab tree:
https://lore.kernel.org/all/20250212150941.5e4fa1c9@canb.auug.org.au/
and Stephen's resolution looks good to me. I also made an example of my own resolution
at:
git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux.git merge/rcu-vs-slab.2025.03.21a
Regards,
Boqun
----------------------------------------------------------------
RCU pull request for v6.15
This pull request contains the following branches:
docs.2025.02.04a:
- Add broken-timing possibility to stallwarn.rst.
- Improve discussion of this_cpu_ptr(), add raw_cpu_ptr().
- Document self-propagating callbacks.
- Point call_srcu() to call_rcu() for detailed memory ordering.
- Add CONFIG_RCU_LAZY delays to call_rcu() kernel-doc header.
- Clarify RCU_LAZY and RCU_LAZY_DEFAULT_OFF help text.
- Remove references to old grace-period-wait primitives.
srcu.2025.02.05a:
- Introduce srcu_read_{un,}lock_fast(), which is similar to
srcu_read_{un,}lock_lite(): avoid smp_mb()s in lock and unlock at the
cost of calling synchronize_rcu() in synchronize_srcu(). Moreover, by
returning the percpu offset of the counter at srcu_read_lock_fast()
time, srcu_read_unlock_fast() can save extra pointer dereferencing,
which makes it faster than srcu_read_{un,}lock_lite().
srcu_read_{un,}lock_fast() are intended to replace
rcu_read_{un,}lock_trace() if possible.
torture.2025.02.05a:
- Add get_torture_init_jiffies() to return the start time of the test.
- Add a test_boost_holdoff module parameter to allow delaying boosting
tests when building rcutorture as built-in.
- Add grace period sequence number logging at the beginning and end of
failure/close-call results.
- Switch to hexadecimal for the expedited grace period sequence number
in the rcu_exp_grace_period trace point.
- Make cur_ops->format_gp_seqs take buffer length.
- Move RCU_TORTURE_TEST_{CHK_RDR_STATE,LOG_CPU} to bool.
- Complain when invalid SRCU reader_flavor is specified.
- Add FORCE_NEED_SRCU_NMI_SAFE Kconfig for testing, which forces SRCU
uses atomics even when percpu ops are NMI safe, and use the Kconfig
for SRCU lockdep testing.
misc.2025.03.04a:
- Split rcu_report_exp_cpu_mult() mask parameter and use for tracing.
- Remove READ_ONCE() for rdp->gpwrap access in __note_gp_changes().
- Fix get_state_synchronize_rcu_full() GP-start detection.
- Move RCU Tasks self-tests to core_initcall().
- Print segment lengths in show_rcu_nocb_gp_state().
- Make RCU watch ct_kernel_exit_state() warning.
- Flush console log from kernel_power_off().
- rcutorture: Allow a negative value for nfakewriters.
- rcu: Update TREE05.boot to test normal synchronize_rcu().
- rcu: Use _full() API to debug synchronize_rcu().
lazypreempt.2025.03.04a: Make RCU handle PREEMPT_LAZY better:
- Fix header guard for rcu_all_qs().
- rcu: Rename PREEMPT_AUTO to PREEMPT_LAZY.
- Update __cond_resched comment about RCU quiescent states.
- Handle unstable rdp in rcu_read_unlock_strict().
- Handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y.
- osnoise: Provide quiescent states.
- Adjust rcutorture with possible PREEMPT_RCU=n && PREEMPT_COUNT=y
combination.
- Limit PREEMPT_RCU configurations.
- Make rcutorture senario TREE07 and senario TREE10 use PREEMPT_LAZY=y.
----------------------------------------------------------------
Ankur Arora (7):
rcu: fix header guard for rcu_all_qs()
rcu: rename PREEMPT_AUTO to PREEMPT_LAZY
sched: update __cond_resched comment about RCU quiescent states
rcu: handle unstable rdp in rcu_read_unlock_strict()
rcu: handle quiescent states for PREEMPT_RCU=n, PREEMPT_COUNT=y
osnoise: provide quiescent states
rcu: limit PREEMPT_RCU configurations
Boqun Feng (2):
rcutorture: Update ->extendables check for lazy preemption
Merge branches 'docs.2025.02.04a', 'lazypreempt.2025.03.04a', 'misc.2025.03.04a', 'srcu.2025.02.05a' and 'torture.2025.02.05a'
Paul E. McKenney (47):
doc: Add broken-timing possibility to stallwarn.rst
docs: Improve discussion of this_cpu_ptr(), add raw_cpu_ptr()
rcu: Document self-propagating callbacks
srcu: Point call_srcu() to call_rcu() for detailed memory ordering
rcu: Add CONFIG_RCU_LAZY delays to call_rcu() kernel-doc header
rcu: Clarify RCU_LAZY and RCU_LAZY_DEFAULT_OFF help text
rcu: Remove references to old grace-period-wait primitives
rcu: Split rcu_report_exp_cpu_mult() mask parameter and use for tracing
srcu: Make Tiny SRCU able to operate in preemptible kernels
srcu: Define SRCU_READ_FLAVOR_ALL in terms of symbols
srcu: Use ->srcu_gp_seq for rcutorture reader batch
srcu: Pull ->srcu_{un,}lock_count into a new srcu_ctr structure
srcu: Make SRCU readers use ->srcu_ctrs for counter selection
srcu: Make Tree SRCU updates independent of ->srcu_idx
srcu: Force synchronization for srcu_get_delay()
srcu: Rename srcu_check_read_flavor_lite() to srcu_check_read_flavor_force()
srcu: Add SRCU_READ_FLAVOR_SLOWGP to flag need for synchronize_rcu()
srcu: Pull pointer-to-integer conversion into __srcu_ptr_to_ctr()
srcu: Pull integer-to-pointer conversion into __srcu_ctr_to_ptr()
srcu: Move SRCU Tree/Tiny definitions from srcu.h
srcu: Add SRCU-fast readers
rcutorture: Add ability to test srcu_read_{,un}lock_fast()
refscale: Add srcu_read_lock_fast() support using "srcu-fast"
rcutorture: Make scenario SRCU-P use srcu_read_lock_fast()
srcu: Fix srcu_read_unlock_{lite,nmisafe}() kernel-doc
srcu: Document that srcu_{read_lock,down_read}() can share srcu_struct
srcu: Add srcu_down_read_fast() and srcu_up_read_fast()
srcu: Make SRCU-fast also be NMI-safe
torture: Add get_torture_init_jiffies() for test-start time
rcutorture: Add a test_boost_holdoff module parameter
rcutorture: Include grace-period sequence numbers in failure/close-call
rcutorture: Expand failure/close-call grace-period output
rcu: Trace expedited grace-period numbers in hexadecimal
rcutorture: Add ftrace-compatible timestamp to GP# failure/close-call output
rcutorture: Make cur_ops->format_gp_seqs take buffer length
rcutorture: Move RCU_TORTURE_TEST_{CHK_RDR_STATE,LOG_CPU} to bool
rcutorture: Complain when invalid SRCU reader_flavor is specified
srcu: Add FORCE_NEED_SRCU_NMI_SAFE Kconfig for testing
torture: Make SRCU lockdep testing use srcu_read_lock_nmisafe()
rcu: Fix get_state_synchronize_rcu_full() GP-start detection
rcu-tasks: Move RCU Tasks self-tests to core_initcall()
rcu/nocb: Print segment lengths in show_rcu_nocb_gp_state()
context_tracking: Make RCU watch ct_kernel_exit_state() warning
Flush console log from kernel_power_off()
rcutorture: Update rcutorture_one_extend_check() for lazy preemption
rcutorture: Make scenario TREE10 build CONFIG_PREEMPT_LAZY=y
rcutorture: Make scenario TREE07 build CONFIG_PREEMPT_LAZY=y
Uladzislau Rezki (Sony) (3):
rcutorture: Allow a negative value for nfakewriters
rcu: Update TREE05.boot to test normal synchronize_rcu()
rcu: Use _full() API to debug synchronize_rcu()
Zilin Guan (1):
rcu: Remove READ_ONCE() for rdp->gpwrap access in __note_gp_changes()
Documentation/RCU/rcubarrier.rst | 5 +-
Documentation/RCU/stallwarn.rst | 7 +
Documentation/admin-guide/kernel-parameters.txt | 5 +
Documentation/core-api/this_cpu_ops.rst | 22 ++-
include/linux/printk.h | 6 +
include/linux/rcupdate.h | 25 +--
include/linux/rcupdate_wait.h | 3 +
include/linux/rcutree.h | 2 +-
include/linux/srcu.h | 102 ++++++++--
include/linux/srcutiny.h | 29 ++-
include/linux/srcutree.h | 98 ++++++++--
include/linux/torture.h | 1 +
include/trace/events/rcu.h | 2 +-
init/main.c | 1 -
kernel/context_tracking.c | 9 +-
kernel/printk/printk.c | 4 +-
kernel/rcu/Kconfig | 35 +++-
kernel/rcu/Kconfig.debug | 18 +-
kernel/rcu/rcu.h | 13 +-
kernel/rcu/rcutorture.c | 124 ++++++++++--
kernel/rcu/refscale.c | 32 +++-
kernel/rcu/srcutiny.c | 20 +-
kernel/rcu/srcutree.c | 207 +++++++++++----------
kernel/rcu/tasks.h | 5 +-
kernel/rcu/tiny.c | 14 ++
kernel/rcu/tree.c | 64 +++++--
kernel/rcu/tree_exp.h | 6 +-
kernel/rcu/tree_nocb.h | 20 +-
kernel/rcu/tree_plugin.h | 22 ++-
kernel/reboot.c | 1 +
kernel/sched/core.c | 4 +-
kernel/torture.c | 12 ++
kernel/trace/trace_osnoise.c | 32 ++--
.../selftests/rcutorture/bin/srcu_lockdep.sh | 2 +-
.../selftests/rcutorture/configs/rcu/SRCU-P.boot | 1 +
.../selftests/rcutorture/configs/rcu/TREE05.boot | 6 +
.../selftests/rcutorture/configs/rcu/TREE07 | 3 +-
.../selftests/rcutorture/configs/rcu/TREE10 | 3 +-
38 files changed, 718 insertions(+), 247 deletions(-)
Powered by blists - more mailing lists