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-10-12 # HEAD: c6de896fa0a4546c799c86513d99bd011b4a6177 Merge branch 'rcu/fix-rt' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu RCU changes for v5.10: - Debugging for smp_call_function() - RT raw/non-raw lock ordering fixes - Strict grace periods for KASAN - New smp_call_function() torture test - Torture-test updates - Documentation updates - Miscellaneous fixes Thanks, Ingo ------------------> Alexander A. Klimov (1): rcutorture: Replace HTTP links with HTTPS ones Colin Ian King (1): refperf: Avoid null pointer dereference when buf fails to allocate Joel Fernandes (Google) (6): rcu/trace: Print negative GP numbers correctly rcu/trace: Use gp_seq_req in acceleration's rcu_grace_period tracepoint rcu: Clarify comments about FQS loop reporting quiescent states rcu: Make FQS more aggressive in complaining about offline CPUs rcutorture: Output number of elapsed grace periods rcu/segcblist: Prevent useless GP start if no CBs to accelerate Madhuparna Bhowmik (2): rculist: Introduce list/hlist_for_each_entry_srcu() macros kvm: mmu: page_track: Fix RCU list API usage Neeraj Upadhyay (2): rcu/tree: Force quiescent state on callback overload rcu/tree: Remove CONFIG_PREMPT_RCU check in force_qs_rnp() Paul E. McKenney (56): lib: Add backtrace_idle parameter to force backtrace of idle CPUs rcu: Remove KCSAN stubs rcu: Remove KCSAN stubs from update.c srcu: Remove KCSAN stubs rcu: Initialize at declaration time in rcu_exp_handler() nocb: Clarify RCU nocb CPU error message nocb: Remove show_rcu_nocb_state() false positive printout rcu: Add READ_ONCE() to rcu_do_batch() access to rcu_divisor rcu: Add READ_ONCE() to rcu_do_batch() access to rcu_resched_ns rcu: Add READ_ONCE() to rcu_do_batch() access to rcu_kick_kthreads rcu: Add READ_ONCE() to rcu_do_batch() access to rcu_cpu_stall_ftrace_dump rcu: Move rcu_cpu_started per-CPU variable to rcu_data rcu/nocb: Add a warning for non-GP kthread running GP code rcu: Remove unused __rcu_is_watching() function scftorture: Add smp_call_function() torture test torture: Declare parse-console.sh independence from rcutorture torture: Add scftorture to the rcutorture scripting scftorture: Implement weighted primitive selection tick-sched: Clarify "NOHZ: local_softirq_pending" warning scftorture: Summarize per-thread statistics scftorture: Add smp_call_function_single() memory-ordering checks scftorture: Add smp_call_function_many() memory-ordering checks scftorture: Add smp_call_function() memory-ordering checks scftorture: Consolidate scftorture_invoke_one() check and kfree() scftorture: Consolidate scftorture_invoke_one() scf_check initialization scftorture: Flag errors in torture-compatible manner scftorture: Prevent compiler from reducing race probabilities scftorture: Check unexpected "switch" statement value scftorture: Block scftorture_invoker() kthreads for offline CPUs scftorture: Adapt memory-ordering test to UP operation scftorture: Add cond_resched() to test loop rcuperf: Change rcuperf to rcuscale rcu: Add Kconfig option for strict RCU grace periods rcu: Reduce leaf fanout for strict RCU grace periods rcu: Restrict default jiffies_till_first_fqs for strict RCU GPs rcu: Force DEFAULT_RCU_BLIMIT to 1000 for strict RCU GPs rcu: Always set .need_qs from __rcu_read_lock() for strict GPs rcu: Do full report for .need_qs for strict GPs rcu: Attempt QS when CPU discovers GP for strict GPs rcu: IPI all CPUs at GP start for strict GPs rcu: IPI all CPUs at GP end for strict GPs rcu: Provide optional RCU-reader exit delay for strict GPs rcu: Execute RCU reader shortly after rcu_core for strict GPs rcu: Report QS for outermost PREEMPT=n rcu_read_unlock() for strict GPs rcu: Remove unused "cpu" parameter from rcu_report_qs_rdp() rcutorture: Remove KCSAN stubs torture: Update initrd documentation rcutorture: Add CONFIG_PROVE_RCU_LIST to TREE05 torture: Add kvm.sh --help and update help message rcutorture: Properly set rcu_fwds for OOM handling rcutorture: Properly synchronize with OOM notifier rcutorture: Hoist OOM registry up one level rcutorture: Allow pointer leaks to test diagnostic code torture: Add gdb support smp: Add source and destination CPUs to __call_single_data kernel/smp: Provide CSD lock timeout diagnostics Paul Gortmaker (1): torture: document --allcpus argument added to the kvm.sh script Randy Dunlap (2): doc: Drop doubled words from RCU Data-Structures.rst doc: Drop doubled words from RCU requirements documentation Thomas Gleixner (13): lib/debug: Remove pointless ARCH_NO_PREEMPT dependencies preempt: Make preempt count unconditional preempt: Cleanup PREEMPT_COUNT leftovers lockdep: Cleanup PREEMPT_COUNT leftovers mm/pagemap: Cleanup PREEMPT_COUNT leftovers locking/bitspinlock: Cleanup PREEMPT_COUNT leftovers uaccess: Cleanup PREEMPT_COUNT leftovers sched: Cleanup PREEMPT_COUNT leftovers ARM: Cleanup PREEMPT_COUNT leftovers xtensa: Cleanup PREEMPT_COUNT leftovers drm/i915: Cleanup PREEMPT_COUNT leftovers rcutorture: Cleanup PREEMPT_COUNT leftovers preempt: Remove PREEMPT_COUNT from Kconfig Tobias Klauser (2): docs: Fix typo in synchronize_rcu() function name rcu: Fix kerneldoc comments in rcupdate.h Uladzislau Rezki (Sony) (1): rcu/tree: Allocate a page when caller is preemptible Wei Yongjun (3): scftorture: Make symbol 'scf_torture_rand' static locktorture: Make function torture_percpu_rwsem_init() static smp: Make symbol 'csd_bug_count' static Zqiang (1): rcu: Shrink each possible cpu krcp kernel test robot (1): kvfree_rcu(): Fix ifnullfree.cocci warnings .../RCU/Design/Data-Structures/Data-Structures.rst | 2 +- .../RCU/Design/Requirements/Requirements.rst | 4 +- Documentation/RCU/whatisRCU.rst | 2 +- Documentation/admin-guide/kernel-parameters.txt | 153 +++++- MAINTAINERS | 3 +- arch/arm/include/asm/assembler.h | 11 - arch/arm/kernel/iwmmxt.S | 2 - arch/arm/mach-ep93xx/crunch-bits.S | 2 - arch/x86/kvm/mmu/page_track.c | 6 +- arch/xtensa/kernel/entry.S | 2 +- drivers/gpu/drm/i915/Kconfig.debug | 1 - drivers/gpu/drm/i915/i915_utils.h | 3 +- include/linux/bit_spinlock.h | 4 +- include/linux/lockdep.h | 6 +- include/linux/pagemap.h | 4 +- include/linux/preempt.h | 37 +- include/linux/rculist.h | 48 ++ include/linux/rcupdate.h | 19 +- include/linux/rcutiny.h | 1 - include/linux/rcutree.h | 1 - include/linux/smp.h | 3 + include/linux/smp_types.h | 3 + include/linux/uaccess.h | 6 +- include/trace/events/rcu.h | 54 +- kernel/Kconfig.preempt | 4 - kernel/Makefile | 2 + kernel/entry/common.c | 2 +- kernel/locking/locktorture.c | 2 +- kernel/rcu/Kconfig | 8 +- kernel/rcu/Kconfig.debug | 17 +- kernel/rcu/Makefile | 2 +- kernel/rcu/rcu_segcblist.c | 10 +- kernel/rcu/{rcuperf.c => rcuscale.c} | 330 ++++++------ kernel/rcu/rcutorture.c | 61 ++- kernel/rcu/refscale.c | 8 +- kernel/rcu/srcutree.c | 13 - kernel/rcu/tree.c | 244 +++++---- kernel/rcu/tree.h | 2 + kernel/rcu/tree_exp.h | 6 +- kernel/rcu/tree_plugin.h | 40 +- kernel/rcu/tree_stall.h | 8 +- kernel/rcu/update.c | 13 - kernel/scftorture.c | 575 +++++++++++++++++++++ kernel/sched/core.c | 6 +- kernel/smp.c | 134 +++++ kernel/time/tick-sched.c | 2 +- lib/Kconfig.debug | 24 +- lib/nmi_backtrace.c | 6 +- ...rf-ftrace.sh => kvm-recheck-rcuscale-ftrace.sh} | 6 +- ...-recheck-rcuperf.sh => kvm-recheck-rcuscale.sh} | 14 +- .../selftests/rcutorture/bin/kvm-recheck-scf.sh | 38 ++ .../selftests/rcutorture/bin/kvm-test-1-run.sh | 33 +- tools/testing/selftests/rcutorture/bin/kvm.sh | 36 +- .../selftests/rcutorture/bin/parse-console.sh | 11 +- .../selftests/rcutorture/configs/rcu/SRCU-t | 1 - .../selftests/rcutorture/configs/rcu/SRCU-u | 1 - .../selftests/rcutorture/configs/rcu/TINY01 | 1 - .../selftests/rcutorture/configs/rcu/TREE05 | 1 + .../selftests/rcutorture/configs/rcuperf/CFcommon | 2 - .../configs/{rcuperf => rcuscale}/CFLIST | 0 .../selftests/rcutorture/configs/rcuscale/CFcommon | 2 + .../rcutorture/configs/{rcuperf => rcuscale}/TINY | 0 .../rcutorture/configs/{rcuperf => rcuscale}/TREE | 0 .../configs/{rcuperf => rcuscale}/TREE54 | 0 .../configs/{rcuperf => rcuscale}/ver_functions.sh | 4 +- .../selftests/rcutorture/configs/scf/CFLIST | 2 + .../selftests/rcutorture/configs/scf/CFcommon | 2 + .../selftests/rcutorture/configs/scf/NOPREEMPT | 9 + .../rcutorture/configs/scf/NOPREEMPT.boot | 1 + .../selftests/rcutorture/configs/scf/PREEMPT | 9 + .../rcutorture/configs/scf/ver_functions.sh | 30 ++ .../testing/selftests/rcutorture/doc/TINY_RCU.txt | 5 +- .../selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 1 - tools/testing/selftests/rcutorture/doc/initrd.txt | 36 +- .../selftests/rcutorture/doc/rcu-test-image.txt | 41 +- .../rcutorture/formal/srcu-cbmc/src/config.h | 1 - 76 files changed, 1626 insertions(+), 557 deletions(-) rename kernel/rcu/{rcuperf.c => rcuscale.c} (64%) create mode 100644 kernel/scftorture.c rename tools/testing/selftests/rcutorture/bin/{kvm-recheck-rcuperf-ftrace.sh => kvm-recheck-rcuscale-ftrace.sh} (92%) rename tools/testing/selftests/rcutorture/bin/{kvm-recheck-rcuperf.sh => kvm-recheck-rcuscale.sh} (84%) create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-recheck-scf.sh delete mode 100644 tools/testing/selftests/rcutorture/configs/rcuperf/CFcommon rename tools/testing/selftests/rcutorture/configs/{rcuperf => rcuscale}/CFLIST (100%) create mode 100644 tools/testing/selftests/rcutorture/configs/rcuscale/CFcommon rename tools/testing/selftests/rcutorture/configs/{rcuperf => rcuscale}/TINY (100%) rename tools/testing/selftests/rcutorture/configs/{rcuperf => rcuscale}/TREE (100%) rename tools/testing/selftests/rcutorture/configs/{rcuperf => rcuscale}/TREE54 (100%) rename tools/testing/selftests/rcutorture/configs/{rcuperf => rcuscale}/ver_functions.sh (88%) create mode 100644 tools/testing/selftests/rcutorture/configs/scf/CFLIST create mode 100644 tools/testing/selftests/rcutorture/configs/scf/CFcommon create mode 100644 tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT create mode 100644 tools/testing/selftests/rcutorture/configs/scf/NOPREEMPT.boot create mode 100644 tools/testing/selftests/rcutorture/configs/scf/PREEMPT create mode 100644 tools/testing/selftests/rcutorture/configs/scf/ver_functions.sh