Skip to content

rcu: Backport upstream RCU related commits up to v5.17

Waiman Long requested to merge llong1/centos-stream-9:bz2065994_rcu into main

Bugzilla: https://bugzilla.redhat.com/show_bug.cgi?id=2065994
MR: !602 (merged)

This patch series backport upstream RCU and various torture tests up to v5.17 kernel. Beside patch 10 which has a merge conflict due to upstream merge conflict, the other patches are all applied cleanly with any issue.

Signed-off-by: Waiman Long longman@redhat.com

Waiman Long (112):
  torture: Apply CONFIG_KCSAN_STRICT to kvm.sh --kcsan argument
  torture: Make torture.sh print the number of files to be compressed
  rcu-nocb: Fix a couple of tree_nocb code-style nits
  rcu: Eliminate rcu_implicit_dynticks_qs() local variable rnhqp
  rcu: Eliminate rcu_implicit_dynticks_qs() local variable ruqp
  doc: Add another stall-warning root cause in stallwarn.rst
  rcu: Fix undefined Kconfig macros
  rcu: Comment rcu_gp_init() code waiting for CPU-hotplug operations
  rcu-tasks: Simplify trc_read_check_handler() atomic operations
  rcu-tasks: Add trc_inspect_reader() checks for exiting critical
    section
  rcu-tasks: Remove second argument of rcu_read_unlock_trace_special()
  rcu: Move rcu_dynticks_eqs_online() to rcu_cpu_starting()
  rcu: Simplify rcu_report_dead() call to rcu_report_exp_rdp()
  rcu: Make rcutree_dying_cpu() use its "cpu" parameter
  rcu-tasks: Wait for trc_read_check_handler() IPIs
  rcutorture: Suppressing read-exit testing is not an error
  rcu-tasks: Fix s/instruction/instructions/ typo in comment
  rcutorture: Warn on individual rcu_torture_init() error conditions
  locktorture: Warn on individual lock_torture_init() error conditions
  rcuscale: Warn on individual rcu_scale_init() error conditions
  rcutorture: Don't cpuhp_remove_state() if cpuhp_setup_state() failed
  rcu: Make rcu_normal_after_boot writable again
  rcu: Make rcu update module parameters world-readable
  rcu-tasks: Move RTGS_WAIT_CBS to beginning of rcu_tasks_kthread() loop
  rcu-tasks: Fix s/rcu_add_holdout/trc_add_holdout/ typo in comment
  rcu-tasks: Correct firstreport usage in check_all_holdout_tasks_trace
  rcu-tasks: Correct comparisons for CPU numbers in
    show_stalled_task_trace
  rcu-tasks: Clarify read side section info for rcu_tasks_rude GP
    primitives
  rcu: Fix existing exp request check in sync_sched_exp_online_cleanup()
  rcutorture: Avoid problematic critical section nesting on PREEMPT_RT
  rcu-tasks: Fix read-side primitives comment for call_rcu_tasks_trace
  rcu-tasks: Fix IPI failure handling in trc_wait_for_one_reader
  rcu: Replace ________p1 and _________p1 with __UNIQUE_ID(rcu)
  rcu-tasks: Update comments to cond_resched_tasks_rcu_qs()
  rcu: Ignore rdp.cpu_no_qs.b.exp on preemptible RCU's rcu_qs()
  rcu: Move rcu_data.cpu_no_qs.b.exp reset to rcu_export_exp_rdp()
  rcu: Remove rcu_data.exp_deferred_qs and convert to rcu_data.cpu
    no_qs.b.exp
  rcu-tasks: Don't remove tasks with pending IPIs from holdout list
  torture: Catch kvm.sh help text up with actual options
  rcutorture: Sanitize RCUTORTURE_RDR_MASK
  rcutorture: More thoroughly test nested readers
  srcu: Prevent redundant __srcu_read_unlock() wakeup
  rcutorture: Suppress pi-lock-across read-unlock testing for Tiny SRCU
  doc: Remove obsolete kernel-per-CPU-kthreads RCU_FAST_NO_HZ advice
  rcu: in_irq() cleanup
  rcu: Always inline rcu_dynticks_task*_{enter,exit}()
  rcu: Mark sync_sched_exp_online_cleanup() ->cpu_no_qs.b.exp load
  rcu: Prevent expedited GP from enabling tick on offline CPU
  rcu: Make idle entry report expedited quiescent states
  rcu/nocb: Make local rcu_nocb_lock_irqsave() safe against concurrent
    deoffloading
  rcu/nocb: Prepare state machine for a new step
  rcu/nocb: Invoke rcu_core() at the start of deoffloading
  rcu/nocb: Make rcu_core() callbacks acceleration preempt-safe
  rcu/nocb: Make rcu_core() callbacks acceleration (de-)offloading safe
  rcu/nocb: Check a stable offloaded state to manipulate
    qlen_last_fqs_check
  rcu/nocb: Use appropriate rcu_nocb_lock_irqsave()
  rcu/nocb: Limit number of softirq callbacks only on softirq
  rcu: Fix callbacks processing time limit retaining cond_resched()
  rcu: Apply callbacks processing time limit only on softirq
  rcu/nocb: Don't invoke local rcu core on callback overload from nocb
    kthread
  rcu: Improve tree_plugin.h comments and add code cleanups
  refscale: Simplify the errexit checkpoint
  refscale: Prevent buffer to pr_alert() being too long
  refscale: Always log the error message
  doc: Add refcount analogy to What is RCU
  refscale: Add missing '\n' to flush message
  scftorture: Add missing '\n' to flush message
  scftorture: Remove unused SCFTORTOUT
  scftorture: Account for weight_resched when checking for all zeroes
  rcuscale: Always log error message
  doc: RCU: Avoid 'Symbol' font-family in SVG figures
  scftorture: Always log error message
  locktorture,rcutorture,torture: Always log error message
  rcu-tasks: Create per-CPU callback lists
  rcu-tasks: Introduce ->percpu_enqueue_shift for dynamic queue
    selection
  rcu-tasks: Convert grace-period counter to grace-period sequence
    number
  rcu_tasks: Convert bespoke callback list to rcu_segcblist structure
  rcu-tasks: Use spin_lock_rcu_node() and friends
  rcu-tasks: Inspect stalled task's trc state in locked state
  rcu-tasks: Add a ->percpu_enqueue_lim to the rcu_tasks structure
  rcu-tasks: Abstract checking of callback lists
  rcu-tasks: Abstract invocations of callbacks
  rcutorture: Avoid soft lockup during cpu stall
  torture: Make kvm-find-errors.sh report link-time undefined symbols
  rcu-tasks: Use workqueues for multiple rcu_tasks_invoke_cbs()
    invocations
  rcu-tasks: Make rcu_barrier_tasks*() handle multiple callback queues
  rcu-tasks: Add rcupdate.rcu_task_enqueue_lim to set initial queueing
  rcutorture: Test RCU-tasks multiqueue callback queueing
  rcu: Avoid running boost kthreads on isolated CPUs
  rcu: Avoid alloc_pages() when recording stack
  rcutorture: Add CONFIG_PREEMPT_DYNAMIC=n to tiny scenarios
  torture: Retry download once before giving up
  rcu-tasks: Count trylocks to estimate call_rcu_tasks() contention
  rcu/nocb: Remove rcu_node structure from nocb list when de-offloaded
  rcu/nocb: Prepare nocb_cb_wait() to start with a non-offloaded rdp
  rcu/nocb: Optimize kthreads and rdp initialization
  rcu/nocb: Create kthreads on all CPUs if "rcu_nocbs=" or "nohz_full="
    are passed
  rcu/nocb: Allow empty "rcu_nocbs" kernel parameter
  rcu/nocb: Merge rcu_spawn_cpu_nocb_kthread() and
    rcu_spawn_one_nocb_kthread()
  rcutorture: Enable multiple concurrent callback-flood kthreads
  rcutorture: Cause TREE02 and TREE10 scenarios to do more callback
    flooding
  rcutorture: Add ability to limit callback-flood intensity
  rcutorture: Combine n_max_cbs from all kthreads in a callback flood
  rcu-tasks: Avoid raw-spinlocked wakeups from call_rcu_tasks_generic()
  rcu-tasks: Use more callback queues if contention encountered
  rcutorture: Test RCU Tasks lock-contention detection
  rcu-tasks: Use separate ->percpu_dequeue_lim for callback dequeueing
  rcu-tasks: Use fewer callbacks queues if callback flood ends
  rcu/exp: Mark current CPU as exp-QS in IPI loop second pass
  torture: Fix incorrectly redirected "exit" in kvm-remote.sh
  torture: Properly redirect kvm-remote.sh "echo" commands
  rcu-tasks: Fix computation of CPU-to-list shift counts

 .../Expedited-Grace-Periods/Funnel0.svg       |   4 +-
 .../Expedited-Grace-Periods/Funnel1.svg       |   4 +-
 .../Expedited-Grace-Periods/Funnel2.svg       |   4 +-
 .../Expedited-Grace-Periods/Funnel3.svg       |   4 +-
 .../Expedited-Grace-Periods/Funnel4.svg       |   4 +-
 .../Expedited-Grace-Periods/Funnel5.svg       |   4 +-
 .../Expedited-Grace-Periods/Funnel6.svg       |   4 +-
 .../Expedited-Grace-Periods/Funnel7.svg       |   4 +-
 .../Expedited-Grace-Periods/Funnel8.svg       |   4 +-
 .../Tree-RCU-Memory-Ordering.rst              |  69 +--
 .../Requirements/GPpartitionReaders1.svg      |  36 +-
 .../Requirements/ReadersPartitionGP1.svg      |  62 +-
 Documentation/RCU/stallwarn.rst               |  10 +
 Documentation/RCU/whatisRCU.rst               |  90 ++-
 .../admin-guide/kernel-parameters.txt         |  66 +-
 .../admin-guide/kernel-per-CPU-kthreads.rst   |   2 +-
 arch/sh/configs/sdk7786_defconfig             |   1 -
 arch/xtensa/configs/nommu_kc705_defconfig     |   1 -
 include/linux/rcu_segcblist.h                 |  51 +-
 include/linux/rcupdate.h                      |  50 +-
 include/linux/rcupdate_trace.h                |   5 +-
 include/linux/rcutiny.h                       |   2 +-
 include/linux/srcu.h                          |   3 +-
 include/linux/torture.h                       |  17 +-
 kernel/locking/locktorture.c                  |  18 +-
 kernel/rcu/Kconfig                            |   2 +-
 kernel/rcu/rcu_segcblist.c                    |  10 +-
 kernel/rcu/rcu_segcblist.h                    |  12 +-
 kernel/rcu/rcuscale.c                         |  24 +-
 kernel/rcu/rcutorture.c                       | 320 +++++++---
 kernel/rcu/refscale.c                         |  50 +-
 kernel/rcu/srcutiny.c                         |   2 +-
 kernel/rcu/tasks.h                            | 583 ++++++++++++++----
 kernel/rcu/tree.c                             | 119 ++--
 kernel/rcu/tree.h                             |  24 +-
 kernel/rcu/tree_exp.h                         |  15 +-
 kernel/rcu/tree_nocb.h                        | 162 +++--
 kernel/rcu/tree_plugin.h                      |  61 +-
 kernel/rcu/update.c                           |   8 +-
 kernel/scftorture.c                           |  20 +-
 kernel/torture.c                              |   4 +-
 .../rcutorture/bin/kvm-find-errors.sh         |   4 +-
 .../rcutorture/bin/kvm-recheck-rcu.sh         |   2 +-
 .../selftests/rcutorture/bin/kvm-remote.sh    |  23 +-
 tools/testing/selftests/rcutorture/bin/kvm.sh |  11 +-
 .../selftests/rcutorture/bin/parse-build.sh   |   3 +-
 .../selftests/rcutorture/bin/torture.sh       |   9 +-
 .../selftests/rcutorture/configs/rcu/SRCU-T   |   1 +
 .../selftests/rcutorture/configs/rcu/SRCU-U   |   1 +
 .../rcutorture/configs/rcu/TASKS01.boot       |   1 +
 .../selftests/rcutorture/configs/rcu/TINY01   |   1 +
 .../selftests/rcutorture/configs/rcu/TINY02   |   1 +
 .../rcutorture/configs/rcu/TRACE01.boot       |   1 +
 .../rcutorture/configs/rcu/TRACE02.boot       |   1 +
 .../rcutorture/configs/rcu/TREE02.boot        |   1 +
 .../rcutorture/configs/rcu/TREE10.boot        |   1 +
 .../rcutorture/configs/rcuscale/TINY          |   1 +
 57 files changed, 1360 insertions(+), 637 deletions(-)
 create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE02.boot
 create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE10.boot
Edited by Waiman Long

Merge request reports