]> www.infradead.org Git - users/dwmw2/linux.git/commitdiff
Merge tag 'rcu-next-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux
authorLinus Torvalds <torvalds@linux-foundation.org>
Tue, 25 Mar 2025 02:41:37 +0000 (19:41 -0700)
committerLinus Torvalds <torvalds@linux-foundation.org>
Tue, 25 Mar 2025 02:41:37 +0000 (19:41 -0700)
Pull RCU updates from Boqun Feng:
 "Documentation:
   - 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:
   - 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 avoid
     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

  RCU torture:
   - 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:
   - 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()

  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"

* tag 'rcu-next-v6.15' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux: (59 commits)
  rcutorture: Make scenario TREE07 build CONFIG_PREEMPT_LAZY=y
  rcutorture: Make scenario TREE10 build CONFIG_PREEMPT_LAZY=y
  rcu: limit PREEMPT_RCU configurations
  rcutorture: Update ->extendables check for lazy preemption
  rcutorture: Update rcutorture_one_extend_check() for lazy preemption
  osnoise: provide quiescent states
  rcu: Use _full() API to debug synchronize_rcu()
  rcu: Update TREE05.boot to test normal synchronize_rcu()
  rcutorture: Allow a negative value for nfakewriters
  Flush console log from kernel_power_off()
  context_tracking: Make RCU watch ct_kernel_exit_state() warning
  rcu/nocb: Print segment lengths in show_rcu_nocb_gp_state()
  rcu-tasks: Move RCU Tasks self-tests to core_initcall()
  rcu: Fix get_state_synchronize_rcu_full() GP-start detection
  torture: Make SRCU lockdep testing use srcu_read_lock_nmisafe()
  srcu: Add FORCE_NEED_SRCU_NMI_SAFE Kconfig for testing
  rcutorture: Complain when invalid SRCU reader_flavor is specified
  rcutorture: Move RCU_TORTURE_TEST_{CHK_RDR_STATE,LOG_CPU} to bool
  rcutorture: Make cur_ops->format_gp_seqs take buffer length
  rcutorture: Add ftrace-compatible timestamp to GP# failure/close-call output
  ...

1  2 
Documentation/admin-guide/kernel-parameters.txt
include/linux/rcupdate.h
include/linux/rcutree.h
include/trace/events/rcu.h
kernel/rcu/tiny.c
kernel/rcu/tree.c
kernel/sched/core.c

Simple merge
Simple merge
Simple merge
index 7a34a99d4664f3fc050ec22378782fe26e8d1e95,8a52aca686a52e9e50b12700b526be0e08f09fab..c1ebfd51768ba4fe8a150fd9d807c8e49abfa705
@@@ -232,6 -246,31 +232,20 @@@ bool poll_state_synchronize_rcu(unsigne
  }
  EXPORT_SYMBOL_GPL(poll_state_synchronize_rcu);
  
 -#ifdef CONFIG_KASAN_GENERIC
 -void kvfree_call_rcu(struct rcu_head *head, void *ptr)
 -{
 -      if (head)
 -              kasan_record_aux_stack(ptr);
 -
 -      __kvfree_call_rcu(head, ptr);
 -}
 -EXPORT_SYMBOL_GPL(kvfree_call_rcu);
 -#endif
 -
+ #if IS_ENABLED(CONFIG_RCU_TORTURE_TEST)
+ unsigned long long rcutorture_gather_gp_seqs(void)
+ {
+       return READ_ONCE(rcu_ctrlblk.gp_seq) & 0xffffULL;
+ }
+ EXPORT_SYMBOL_GPL(rcutorture_gather_gp_seqs);
+ void rcutorture_format_gp_seqs(unsigned long long seqs, char *cp, size_t len)
+ {
+       snprintf(cp, len, "g%04llx", seqs & 0xffffULL);
+ }
+ EXPORT_SYMBOL_GPL(rcutorture_format_gp_seqs);
+ #endif
  void __init rcu_init(void)
  {
        open_softirq(RCU_SOFTIRQ, rcu_process_callbacks);
Simple merge
Simple merge