• Linus Torvalds's avatar
    Merge tag 'rcu.release.v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux · 067610eb
    Linus Torvalds authored
    Pull RCU updates from Neeraj Upadhyay:
     "Context tracking:
       - rename context tracking state related symbols and remove references
         to "dynticks" in various context tracking state variables and
         related helpers
       - force context_tracking_enabled_this_cpu() to be inlined to avoid
         leaving a noinstr section
    
      CSD lock:
       - enhance CSD-lock diagnostic reports
       - add an API to provide an indication of ongoing CSD-lock stall
    
      nocb:
       - update and simplify RCU nocb code to handle (de-)offloading of
         callbacks only for offline CPUs
       - fix RT throttling hrtimer being armed from offline CPU
    
      rcutorture:
       - remove redundant rcu_torture_ops get_gp_completed fields
       - add SRCU ->same_gp_state and ->get_comp_state functions
       - add generic test for NUM_ACTIVE_*RCU_POLL* for testing RCU and SRCU
         polled grace periods
       - add CFcommon.arch for arch-specific Kconfig options
       - print number of update types in rcu_torture_write_types()
       - add rcutree.nohz_full_patience_delay testing to the TREE07 scenario
       - add a stall_cpu_repeat module parameter to test repeated CPU stalls
       - add argument to limit number of CPUs a guest OS can use in
         torture.sh
    
      rcustall:
       - abbreviate RCU CPU stall warnings during CSD-lock stalls
       - Allow dump_cpu_task() to be called without disabling preemption
       - defer printing stall-warning backtrace when holding rcu_node lock
    
      srcu:
       - make SRCU gp seq wrap-around faster
       - add KCSAN checks for concurrent updates to ->srcu_n_exp_nodelay and
         ->reschedule_count which are used in heuristics governing
         auto-expediting of normal SRCU grace periods and
         grace-period-state-machine delays
       - mark idle SRCU-barrier callbacks to help identify stuck
         SRCU-barrier callback
    
      rcu tasks:
       - remove RCU Tasks Rude asynchronous APIs as they are no longer used
       - stop testing RCU Tasks Rude asynchronous APIs
       - fix access to non-existent percpu regions
       - check processor-ID assumptions during chosen CPU calculation for
         callback enqueuing
       - update description of rtp->tasks_gp_seq grace-period sequence
         number
       - add rcu_barrier_cb_is_done() to identify whether a given
         rcu_barrier callback is stuck
       - mark idle Tasks-RCU-barrier callbacks
       - add *torture_stats_print() functions to print detailed diagnostics
         for Tasks-RCU variants
       - capture start time of rcu_barrier_tasks*() operation to help
         distinguish a hung barrier operation from a long series of barrier
         operations
    
      refscale:
       - add a TINY scenario to support tests of Tiny RCU and Tiny
         SRCU
       - optimize process_durations() operation
    
      rcuscale:
       - dump stacks of stalled rcu_scale_writer() instances and
         grace-period statistics when rcu_scale_writer() stalls
       - mark idle RCU-barrier callbacks to identify stuck RCU-barrier
         callbacks
       - print detailed grace-period and barrier diagnostics on
         rcu_scale_writer() hangs for Tasks-RCU variants
       - warn if async module parameter is specified for RCU implementations
         that do not have async primitives such as RCU Tasks Rude
       - make all writer tasks report upon hang
       - tolerate repeated GFP_KERNEL failure in rcu_scale_writer()
       - use special allocator for rcu_scale_writer()
       - NULL out top-level pointers to heap memory to avoid double-free
         bugs on modprobe failures
       - maintain per-task instead of per-CPU callbacks count to avoid any
         issues with migration of either tasks or callbacks
       - constify struct ref_scale_ops
    
      Fixes:
       - use system_unbound_wq for kfree_rcu work to avoid disturbing
         isolated CPUs
    
      Misc:
       - warn on unexpected rcu_state.srs_done_tail state
       - better define "atomic" for list_replace_rcu() and
         hlist_replace_rcu() routines
       - annotate struct kvfree_rcu_bulk_data with __counted_by()"
    
    * tag 'rcu.release.v6.12' of git://git.kernel.org/pub/scm/linux/kernel/git/rcu/linux: (90 commits)
      rcu: Defer printing stall-warning backtrace when holding rcu_node lock
      rcu/nocb: Remove superfluous memory barrier after bypass enqueue
      rcu/nocb: Conditionally wake up rcuo if not already waiting on GP
      rcu/nocb: Fix RT throttling hrtimer armed from offline CPU
      rcu/nocb: Simplify (de-)offloading state machine
      context_tracking: Tag context_tracking_enabled_this_cpu() __always_inline
      context_tracking, rcu: Rename rcu_dyntick trace event into rcu_watching
      rcu: Update stray documentation references to rcu_dynticks_eqs_{enter, exit}()
      rcu: Rename rcu_momentary_dyntick_idle() into rcu_momentary_eqs()
      rcu: Rename rcu_implicit_dynticks_qs() into rcu_watching_snap_recheck()
      rcu: Rename dyntick_save_progress_counter() into rcu_watching_snap_save()
      rcu: Rename struct rcu_data .exp_dynticks_snap into .exp_watching_snap
      rcu: Rename struct rcu_data .dynticks_snap into .watching_snap
      rcu: Rename rcu_dynticks_zero_in_eqs() into rcu_watching_zero_in_eqs()
      rcu: Rename rcu_dynticks_in_eqs_since() into rcu_watching_snap_stopped_since()
      rcu: Rename rcu_dynticks_in_eqs() into rcu_watching_snap_in_eqs()
      rcu: Rename rcu_dynticks_eqs_online() into rcu_watching_online()
      context_tracking, rcu: Rename rcu_dynticks_curr_cpu_in_eqs() into rcu_is_watching_curr_cpu()
      context_tracking, rcu: Rename rcu_dynticks_task*() into rcu_task*()
      refscale: Constify struct ref_scale_ops
      ...
    067610eb
tree_exp.h 34.7 KB