Hello, Ingo! This pull request contains the following changes: 1. Documentation updates. https://lore.kernel.org/lkml/20200623000923.GA25047@paulmck-ThinkPad-P72 2. Miscellaneous fixes. https://lore.kernel.org/lkml/20200623002128.GA25456@paulmck-ThinkPad-P72 3. kfree_rcu updates. https://lore.kernel.org/lkml/20200624201200.GA28901@paulmck-ThinkPad-P72 4. RCU tasks updates. https://lore.kernel.org/lkml/20200623002423.GA25869@paulmck-ThinkPad-P72 5. Read-side scalability tests. https://lore.kernel.org/lkml/20200623002941.GA26089@paulmck-ThinkPad-P72 6. SRCU updates. https://lore.kernel.org/lkml/20200623003310.GA26539@paulmck-ThinkPad-P72 7. Torture-test updates. https://lore.kernel.org/lkml/20200623003731.GA26717@paulmck-ThinkPad-P72 All of these have been subjected to the kbuild test robot and -next testing, and are available in the git repository based on v5.8-rc3 at: git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git for-mingo for you to fetch changes up to 13625c0a4074d3bab61b1dc70a828b574255f339: Merge branches 'doc.2020.06.29a', 'fixes.2020.06.29a', 'kfree_rcu.2020.06.29a', 'rcu-tasks.2020.06.29a', 'scale.2020.06.29a', 'srcu.2020.06.29a' and 'torture.2020.06.29a' into HEAD (2020-06-29 12:03:15 -0700) ---------------------------------------------------------------- Arnd Bergmann (1): refperf: Work around 64-bit division Ethon Paul (1): srcu: Fix a typo in comment "amoritized"->"amortized" Frederic Weisbecker (1): tick/nohz: Narrow down noise while setting current task's tick dependency Joel Fernandes (Google) (5): rcu/tree: Keep kfree_rcu() awake during lock contention rcu/tree: Skip entry into the page allocator for PREEMPT_RT rcu/tree: Make debug_objects logic independent of rcu_head rcuperf: Remove useless while loops around wait_event refperf: Add a test to measure performance of read-side synchronization Jules Irenge (2): rcu: Replace 1 with true rcu/rcutorture: Replace 0 with false Lihao Liang (1): rcu: Update comment from rsp->rcu_gp_seq to rsp->gp_seq Madhuparna Bhowmik (1): trace: events: rcu: Change description of rcu_dyntick trace event Marco Elver (1): torture: Pass --kmake-arg to all make invocations Mauro Carvalho Chehab (10): docs: RCU: Convert checklist.txt to ReST docs: RCU: Convert lockdep-splat.txt to ReST docs: RCU: Convert lockdep.txt to ReST docs: RCU: Convert rculist_nulls.txt to ReST docs: RCU: Convert torture.txt to ReST docs: RCU: Convert rcuref.txt to ReST docs: RCU: Convert stallwarn.txt to ReST docs: RCU: Don't duplicate chapter names in rculist_nulls.rst rcu: Fix some kernel-doc warnings rcu: Fix a kernel-doc warnings for "count" Paul E. McKenney (65): doc: Timer problems can cause RCU CPU stall warnings doc: Tasks RCU must protect instructions before trampoline mm/mmap.c: Add cond_resched() for exit_mmap() CPU stalls rcu: Add callbacks-invoked counters rcu: Add comment documenting rcu_callback_map's purpose rcu: Grace-period-kthread related sleeps to idle priority rcu: Priority-boost-related sleeps to idle priority rcu: No-CBs-related sleeps to idle priority rcu: Expedited grace-period sleeps to idle priority fs/btrfs: Add cond_resched() for try_release_extent_mapping() stalls rcu: Remove initialized but unused rnp from check_slow_task() rcu: Mark rcu_nmi_enter() call to rcu_cleanup_after_idle() noinstr lockdep: Complain only once about RCU in extended quiescent state rcu-tasks: Convert sleeps to idle priority rcu-tasks: Make rcu_tasks_postscan() be static rcu-tasks: Add #include of rcupdate_trace.h to update.c rcu-tasks: Conditionally compile show_rcu_tasks_gp_kthreads() rcu-tasks: Fix code-style issues rcuperf: Add comments explaining the high reader overhead torture: Add refperf to the rcutorture scripting refperf: Add holdoff parameter to allow CPUs to come online refperf: Hoist function-pointer calls out of the loop refperf: Allow decimal nanoseconds refperf: Convert nreaders to a module parameter refperf: Provide module parameter to specify number of experiments refperf: Dynamically allocate experiment-summary output buffer refperf: Dynamically allocate thread-summary output buffer refperf: Make functions static refperf: Tune reader measurement interval refperf: Convert reader_task structure's "start" field to int refperf: More closely synchronize reader start times refperf: Add warmup and cooldown processing phases refperf: Label experiment-number column "Runs" refperf: Output per-experiment data points refperf: Simplify initialization-time wakeup protocol refperf: Add read-side delay module parameter refperf: Adjust refperf.loop default value doc: Document rcuperf's module parameters refperf: Change readdelay module parameter to nanoseconds refperf: Add test for RCU Tasks Trace readers. refperf: Add test for RCU Tasks readers rcu-tasks: Fix synchronize_rcu_tasks_trace() header comment refperf: Rename RCU_REF_PERF_TEST to RCU_REF_SCALE_TEST refperf: Rename refperf.c to refscale.c and change internal names refscale: Change --torture type from refperf to refscale torture: Remove qemu dependency on EFI firmware torture: Add script to smoke-test commits in a branch rcutorture: Add races with task-exit processing torture: Set configfile variable to current scenario rcutorture: Handle non-statistic bang-string error messages rcutorture: NULL rcu_torture_current earlier in cleanup code torture: Remove whitespace from identify_qemu_vcpus output torture: Add --allcpus argument to the kvm.sh script torture: Create qemu-cmd in --buildonly runs torture: Add a stop-run capability torture: Abstract out console-log error detection rcutorture: Check for unwatched readers torture: Correctly summarize build-only runs torture: Improve diagnostic for KCSAN-incapable compilers torture: Add more tracing crib notes to kvm.sh torture: Add kvm-tranform.sh script for qemu-cmd files torture: Dump ftrace at shutdown only if requested torture: Avoid duplicate specification of qemu command torture: Remove obsolete "cd $KVM" Merge branches 'doc.2020.06.29a', 'fixes.2020.06.29a', 'kfree_rcu.2020.06.29a', 'rcu-tasks.2020.06.29a', 'scale.2020.06.29a', 'srcu.2020.06.29a' and 'torture.2020.06.29a' into HEAD Peter Enderborg (1): rcu: Stop shrinker loop Randy Dunlap (1): kernel/rcu/tree.c: Fix kernel-doc warnings Sebastian Andrzej Siewior (2): rcu/tree: Use static initializer for krc.lock srcu: Avoid local_irq_save() before acquiring spinlock_t Uladzislau Rezki (Sony) (12): rcu/tree: Repeat the monitor if any free channel is busy rcu/tree: Simplify KFREE_BULK_MAX_ENTR macro rcu/tree: Move kfree_rcu_cpu locking/unlocking to separate functions rcu/tree: cache specified number of objects rcu/tree: Maintain separate array for vmalloc ptrs rcu/tiny: support vmalloc in tiny-RCU rcu: Rename *_kfree_callback/*_kfree_rcu_offset/kfree_call_* mm/list_lru.c: Rename kvfree_rcu() to local variant rcu: Introduce 2 arg kvfree_rcu() interface rcu: Support reclaim for head-less object rcu: Introduce single argument kvfree_rcu() interface lib/test_vmalloc.c: Add test cases for kvfree_rcu() Wei Yang (5): rcu: Initialize and destroy rcu_synchronize only when necessary rcu: Simplify the calculation of rcu_state.ncpus rcu: gp_max is protected by root rcu_node's lock rcu: grplo/grphi just records CPU number rcu: grpnum just records group number Zou Wei (1): locktorture: Use true and false to assign to bool variables .../RCU/Design/Requirements/Requirements.rst | 7 +- Documentation/RCU/{checklist.txt => checklist.rst} | 17 +- Documentation/RCU/index.rst | 9 + .../RCU/{lockdep-splat.txt => lockdep-splat.rst} | 109 ++-- Documentation/RCU/{lockdep.txt => lockdep.rst} | 12 +- Documentation/RCU/rculist_nulls.rst | 200 ++++++ Documentation/RCU/rculist_nulls.txt | 172 ----- Documentation/RCU/{rcuref.txt => rcuref.rst} | 199 +++--- Documentation/RCU/{stallwarn.txt => stallwarn.rst} | 62 +- Documentation/RCU/{torture.txt => torture.rst} | 117 ++-- Documentation/admin-guide/kernel-parameters.txt | 68 ++ Documentation/locking/locktorture.rst | 2 +- MAINTAINERS | 4 +- fs/btrfs/extent_io.c | 2 + include/linux/rculist.h | 2 +- include/linux/rculist_nulls.h | 2 +- include/linux/rcupdate.h | 53 +- include/linux/rcupdate_trace.h | 4 +- include/linux/rcutiny.h | 20 +- include/linux/rcutree.h | 2 +- include/linux/torture.h | 5 + include/trace/events/rcu.h | 19 +- kernel/locking/lockdep.c | 4 +- kernel/locking/locktorture.c | 14 +- kernel/rcu/Kconfig.debug | 19 + kernel/rcu/Makefile | 1 + kernel/rcu/rcuperf.c | 25 +- kernel/rcu/rcutorture.c | 119 +++- kernel/rcu/refscale.c | 717 +++++++++++++++++++++ kernel/rcu/srcutree.c | 16 +- kernel/rcu/tasks.h | 37 +- kernel/rcu/tiny.c | 7 +- kernel/rcu/tree.c | 407 ++++++++---- kernel/rcu/tree.h | 15 +- kernel/rcu/tree_exp.h | 2 +- kernel/rcu/tree_plugin.h | 4 +- kernel/rcu/tree_stall.h | 9 +- kernel/rcu/update.c | 16 +- kernel/time/tick-sched.c | 22 +- kernel/torture.c | 6 +- lib/test_vmalloc.c | 103 ++- mm/list_lru.c | 6 +- mm/mmap.c | 1 + net/core/sock.c | 4 +- .../testing/selftests/rcutorture/bin/configinit.sh | 4 +- .../selftests/rcutorture/bin/console-badness.sh | 16 + .../testing/selftests/rcutorture/bin/functions.sh | 23 +- tools/testing/selftests/rcutorture/bin/jitter.sh | 6 + .../testing/selftests/rcutorture/bin/kvm-build.sh | 6 + .../selftests/rcutorture/bin/kvm-check-branches.sh | 108 ++++ .../rcutorture/bin/kvm-recheck-refscale.sh | 71 ++ .../selftests/rcutorture/bin/kvm-recheck.sh | 20 +- .../selftests/rcutorture/bin/kvm-test-1-run.sh | 27 +- .../selftests/rcutorture/bin/kvm-transform.sh | 51 ++ tools/testing/selftests/rcutorture/bin/kvm.sh | 19 +- .../selftests/rcutorture/bin/parse-console.sh | 27 +- .../selftests/rcutorture/configs/refscale/CFLIST | 2 + .../selftests/rcutorture/configs/refscale/CFcommon | 2 + .../rcutorture/configs/refscale/NOPREEMPT | 18 + .../selftests/rcutorture/configs/refscale/PREEMPT | 18 + .../rcutorture/configs/refscale/ver_functions.sh | 16 + 61 files changed, 2395 insertions(+), 680 deletions(-) rename Documentation/RCU/{checklist.txt => checklist.rst} (98%) rename Documentation/RCU/{lockdep-splat.txt => lockdep-splat.rst} (54%) rename Documentation/RCU/{lockdep.txt => lockdep.rst} (96%) create mode 100644 Documentation/RCU/rculist_nulls.rst delete mode 100644 Documentation/RCU/rculist_nulls.txt rename Documentation/RCU/{rcuref.txt => rcuref.rst} (50%) rename Documentation/RCU/{stallwarn.txt => stallwarn.rst} (88%) rename Documentation/RCU/{torture.txt => torture.rst} (76%) create mode 100644 kernel/rcu/refscale.c create mode 100755 tools/testing/selftests/rcutorture/bin/console-badness.sh create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-check-branches.sh create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-recheck-refscale.sh create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-transform.sh create mode 100644 tools/testing/selftests/rcutorture/configs/refscale/CFLIST create mode 100644 tools/testing/selftests/rcutorture/configs/refscale/CFcommon create mode 100644 tools/testing/selftests/rcutorture/configs/refscale/NOPREEMPT create mode 100644 tools/testing/selftests/rcutorture/configs/refscale/PREEMPT create mode 100644 tools/testing/selftests/rcutorture/configs/refscale/ver_functions.sh