[GIT PULL] RCU changes for v5.9

From: Ingo Molnar
Date: Mon Aug 03 2020 - 07:30:38 EST


Linus,

Please pull the latest core/rcu git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-rcu-2020-08-03

# HEAD: c1cc4784ce6e8cceff1013709abd74bcbf7fbf24 Merge branch 'for-mingo' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu

These are the latest RCU bits for v5.9:

- kfree_rcu updates
- RCU tasks updates
- Read-side scalability tests
- SRCU updates
- Torture-test updates
- Documentation updates
- Miscellaneous fixes

Thanks,

Ingo

------------------>
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 (64):
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"

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