rcu: Backport upstream RCU related commits up to v5.17
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