Hello, Linus, Please pull the latest RCU git tree from: git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git tags/rcu.2022.01.09a # HEAD: f80fe66c38d561a006fb4f514b0ee5d11cbe2673 Merge branches 'doc.2021.11.30c', 'exp.2021.12.07a', 'fastnohz.2021.11.30c', 'fixes.2021.11.30c', 'nocb.2021.12.09a', 'nolibc.2021.11.30c', 'tasks.2021.12.09a', 'torture.2021.12.07a' and 'torturescript.2021.11.30c' into HEAD RCU changes for this cycle were: doc.2021.11.30c: Documentation updates, perhaps most notably Neil Brown's writeup of the reference-counting analogy to RCU. exp.2021.12.07a: Expedited grace-period cleanups. fastnohz.2021.11.30c: Remove CONFIG_RCU_FAST_NO_HZ due to lack of valid users. I have asked around, posted a blog entry, and sent this series to LKML without result. fixes.2021.11.30c: Miscellaneous fixes. nocb.2021.12.09a: RCU callback offloading updates, perhaps most notably Frederic Weisbecker's updates allowing CPUs booted in the de-offloaded state to be offloaded at runtime. nolibc.2021.11.30c: nolibc fixes from Willy Tarreau and Anmar Faizi, but also including Mark Brown's addition of gettid(). tasks.2021.12.09a: RCU Tasks Trace fixes, including changes that increase the scalability of call_rcu_tasks_trace() for the BPF folks (Martin Lau and KP Singh). torture.2021.12.07a: Various fixes including those from Wander Lairson Costa and Li Zhijian. torturescript.2021.11.30c: Fixes plus addition of tests for the increased call_rcu_tasks_trace() scalability. ---------------------------------------------------------------- Akira Yokosawa (1): doc: RCU: Avoid 'Symbol' font-family in SVG figures Ammar Faizi (3): tools/nolibc: x86-64: Fix startup code bug tools/nolibc: x86: Remove `r8`, `r9` and `r10` from the clobber list tools/nolibc: x86-64: Use `mov $60,%eax` instead of `mov $60,%rax` Changbin Du (1): rcu: in_irq() cleanup Chun-Hung Tseng (1): rcu: Replace ________p1 and _________p1 with __UNIQUE_ID(rcu) Frederic Weisbecker (20): 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/exp: Mark current CPU as exp-QS in IPI loop second pass 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 (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/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() Jun Miao (1): rcu: Avoid alloc_pages() when recording stack Li Zhijian (9): refscale: Simplify the errexit checkpoint refscale: Prevent buffer to pr_alert() being too long refscale: Always log the error message refscale: Add missing '\n' to flush message scftorture: Add missing '\n' to flush message scftorture: Remove unused SCFTORTOUT rcuscale: Always log error message scftorture: Always log error message locktorture,rcutorture,torture: Always log error message Mark Brown (1): tools/nolibc: Implement gettid() Neeraj Upadhyay (1): rcu-tasks: Inspect stalled task's trc state in locked state NeilBrown (1): doc: Add refcount analogy to What is RCU Paul E. McKenney (43): rcutorture: Add CONFIG_PREEMPT_DYNAMIC=n to tiny scenarios doc: Remove obsolete kernel-per-CPU-kthreads RCU_FAST_NO_HZ advice torture: Remove RCU_FAST_NO_HZ from rcuscale and refscale scenarios torture: Remove RCU_FAST_NO_HZ from rcu scenarios rcu: Remove the RCU_FAST_NO_HZ Kconfig option rcu: Move rcu_needs_cpu() to tree.c srcu: Prevent redundant __srcu_read_unlock() wakeup rcu-tasks: Don't remove tasks with pending IPIs from holdout list rcutorture: Sanitize RCUTORTURE_RDR_MASK rcutorture: More thoroughly test nested readers rcutorture: Suppress pi-lock-across read-unlock testing for Tiny SRCU torture: Catch kvm.sh help text up with actual options torture: Make kvm-find-errors.sh report link-time undefined symbols torture: Retry download once before giving up rcutorture: Cause TREE02 and TREE10 scenarios to do more callback flooding rcutorture: Test RCU Tasks lock-contention detection torture: Fix incorrectly redirected "exit" in kvm-remote.sh torture: Properly redirect kvm-remote.sh "echo" commands 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: Tighten rcu_advance_cbs_nowake() checks 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 rcutorture: Test RCU-tasks multiqueue callback queueing rcutorture: Enable multiple concurrent callback-flood kthreads rcutorture: Add ability to limit callback-flood intensity rcutorture: Combine n_max_cbs from all kthreads in a callback flood rcu-tasks: Use spin_lock_rcu_node() and friends 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 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 rcu-tasks: Count trylocks to estimate call_rcu_tasks() contention rcu-tasks: Avoid raw-spinlocked wakeups from call_rcu_tasks_generic() rcu-tasks: Use more callback queues if contention encountered rcu-tasks: Use separate ->percpu_dequeue_lim for callback dequeueing rcu-tasks: Use fewer callbacks queues if callback flood ends Merge branches 'doc.2021.11.30c', 'exp.2021.12.07a', 'fastnohz.2021.11.30c', 'fixes.2021.11.30c', 'nocb.2021.12.09a', 'nolibc.2021.11.30c', 'tasks.2021.12.09a', 'torture.2021.12.07a' and 'torturescript.2021.11.30c' into HEAD Thomas Gleixner (1): rcu/nocb: Make rcu_core() callbacks acceleration preempt-safe Wander Lairson Costa (1): rcutorture: Avoid soft lockup during cpu stall Willy Tarreau (2): tools/nolibc: i386: fix initial stack alignment tools/nolibc: fix incorrect truncation of exit code Zhouyi Zhou (1): rcu: Improve tree_plugin.h comments and add code cleanups Zqiang (1): rcu: Avoid running boost kthreads on isolated CPUs .../RCU/Design/Expedited-Grace-Periods/Funnel0.svg | 4 +- .../RCU/Design/Expedited-Grace-Periods/Funnel1.svg | 4 +- .../RCU/Design/Expedited-Grace-Periods/Funnel2.svg | 4 +- .../RCU/Design/Expedited-Grace-Periods/Funnel3.svg | 4 +- .../RCU/Design/Expedited-Grace-Periods/Funnel4.svg | 4 +- .../RCU/Design/Expedited-Grace-Periods/Funnel5.svg | 4 +- .../RCU/Design/Expedited-Grace-Periods/Funnel6.svg | 4 +- .../RCU/Design/Expedited-Grace-Periods/Funnel7.svg | 4 +- .../RCU/Design/Expedited-Grace-Periods/Funnel8.svg | 4 +- .../Design/Requirements/GPpartitionReaders1.svg | 36 +- .../Design/Requirements/ReadersPartitionGP1.svg | 62 +-- Documentation/RCU/stallwarn.rst | 11 - Documentation/RCU/whatisRCU.rst | 90 +++- Documentation/admin-guide/kernel-parameters.txt | 70 ++- .../admin-guide/kernel-per-CPU-kthreads.rst | 2 +- Documentation/timers/no_hz.rst | 10 +- include/linux/rcu_segcblist.h | 51 ++- include/linux/rcupdate.h | 50 ++- include/linux/rcutiny.h | 2 +- include/linux/srcu.h | 3 +- include/linux/torture.h | 9 +- kernel/locking/locktorture.c | 4 +- kernel/rcu/Kconfig | 20 +- kernel/rcu/rcu_segcblist.c | 10 +- kernel/rcu/rcu_segcblist.h | 12 +- kernel/rcu/rcuscale.c | 14 +- kernel/rcu/rcutorture.c | 234 +++++++--- kernel/rcu/refscale.c | 50 ++- kernel/rcu/srcutiny.c | 2 +- kernel/rcu/tasks.h | 476 +++++++++++++++++---- kernel/rcu/tree.c | 131 ++++-- kernel/rcu/tree.h | 31 +- kernel/rcu/tree_exp.h | 14 +- kernel/rcu/tree_nocb.h | 160 ++++--- kernel/rcu/tree_plugin.h | 250 ++--------- kernel/rcu/tree_stall.h | 27 +- kernel/scftorture.c | 16 +- kernel/torture.c | 4 +- tools/include/nolibc/nolibc.h | 86 ++-- .../selftests/rcutorture/bin/kvm-find-errors.sh | 4 +- .../selftests/rcutorture/bin/kvm-recheck-rcu.sh | 2 +- .../testing/selftests/rcutorture/bin/kvm-remote.sh | 23 +- tools/testing/selftests/rcutorture/bin/kvm.sh | 9 +- .../selftests/rcutorture/bin/parse-build.sh | 3 +- .../selftests/rcutorture/configs/rcu/SRCU-T | 1 + .../selftests/rcutorture/configs/rcu/SRCU-U | 1 + .../selftests/rcutorture/configs/rcu/TASKS01.boot | 1 + .../selftests/rcutorture/configs/rcu/TINY01 | 1 + .../selftests/rcutorture/configs/rcu/TINY02 | 1 + .../selftests/rcutorture/configs/rcu/TRACE01.boot | 1 + .../selftests/rcutorture/configs/rcu/TRACE02.boot | 1 + .../selftests/rcutorture/configs/rcu/TREE01 | 1 - .../selftests/rcutorture/configs/rcu/TREE02 | 1 - .../selftests/rcutorture/configs/rcu/TREE02.boot | 1 + .../selftests/rcutorture/configs/rcu/TREE04 | 1 - .../selftests/rcutorture/configs/rcu/TREE05 | 1 - .../selftests/rcutorture/configs/rcu/TREE06 | 1 - .../selftests/rcutorture/configs/rcu/TREE07 | 1 - .../selftests/rcutorture/configs/rcu/TREE08 | 1 - .../selftests/rcutorture/configs/rcu/TREE10 | 1 - .../selftests/rcutorture/configs/rcu/TREE10.boot | 1 + .../selftests/rcutorture/configs/rcuscale/TINY | 2 +- .../selftests/rcutorture/configs/rcuscale/TRACE01 | 1 - .../selftests/rcutorture/configs/rcuscale/TREE | 1 - .../selftests/rcutorture/configs/rcuscale/TREE54 | 1 - .../rcutorture/configs/refscale/NOPREEMPT | 1 - .../selftests/rcutorture/configs/refscale/PREEMPT | 1 - .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 1 - 68 files changed, 1244 insertions(+), 795 deletions(-) create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE02.boot create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TREE10.boot