[GIT PULL] RCU changes for v5.4

From: Ingo Molnar
Date: Mon Sep 16 2019 - 07:26:50 EST


Linus,

Please pull the latest core-rcu-for-linus git tree from:

git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git core-rcu-for-linus

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

This cycle's RCU changes were:

- A few more RCU flavor consolidation cleanups.

- Updates to RCU's list-traversal macros improving lockdep usability.

- Forward-progress improvements for no-CBs CPUs: Avoid ignoring
incoming callbacks during grace-period waits.

- Forward-progress improvements for no-CBs CPUs: Use ->cblist
structure to take advantage of others' grace periods.

- Also added a small commit that avoids needlessly inflicting
scheduler-clock ticks on callback-offloaded CPUs.

- Forward-progress improvements for no-CBs CPUs: Reduce contention
on ->nocb_lock guarding ->cblist.

- Forward-progress improvements for no-CBs CPUs: Add ->nocb_bypass
list to further reduce contention on ->nocb_lock guarding ->cblist.

- Miscellaneous fixes.

- Torture-test updates.

- minor LKMM updates.

There's a linecount increase as a result of these changes:

49 files changed, 1480 insertions(+), 786 deletions(-)

Of the +~700 lines increase, roughly half are documentation and
diagnostics, the other half new code such as better queueing latencies
for no-CBs CPUs.

Note that a somewhat non-standard merge commit slipped into the LKMM
portions:

07f038a408fb: Merge LKMM and RCU commits

We'll use a more standard merge commit format in the future.

Thanks,

Ingo

------------------>
Andrea Parri (2):
tools/memory-model: Update the informal documentation
MAINTAINERS: Update e-mail address for Andrea Parri

Byungchul Park (1):
rcu: Change return type of rcu_spawn_one_boost_kthread()

Christoph Hellwig (1):
rcu: Don't include <linux/ktime.h> in rcutiny.h

Denis Efremov (1):
torture: Remove exporting of internal functions

Eric Dumazet (1):
rcu: Allow rcu_do_batch() to dynamically adjust batch sizes

Joel Fernandes (Google) (11):
rcu: Simplify rcu_note_context_switch exit from critical section
treewide: Rename rcu_dereference_raw_notrace() to _check()
rcu: Remove redundant debug_locks check in rcu_read_lock_sched_held()
rcuperf: Make rcuperf kernel test more robust for !expedited mode
tools/memory-model: Use cumul-fence instead of fence in ->prop example
rcu: Add support for consolidated-RCU reader checking
rcu/sync: Remove custom check for RCU readers
ipv4: Add lockdep condition to fix for_each_entry()
driver/core: Convert to use built-in RCU list checking
x86/pci: Pass lockdep condition to pcm_mmcfg_list iterator
acpi: Use built-in RCU list checking for acpi_ioremaps list

Mukesh Ojha (1):
rcu: Fix spelling mistake "greate"->"great"

Paul E. McKenney (66):
tools/memory-model: Make scripts be executable
rcu: Simplify rcu_read_unlock_special() deferred wakeups
rcu: Make rcu_read_unlock_special() checks match raise_softirq_irqoff()
lockdep: Make print_lock() address visible
time/tick-broadcast: Fix tick_broadcast_offline() lockdep complaint
rcu: Restore barrier() to rcu_read_lock() and rcu_read_unlock()
rcu: Add kernel parameter to dump trace after RCU CPU stall warning
rcu: Add destroy_work_on_stack() to match INIT_WORK_ONSTACK()
srcu: Avoid srcutorture security-based pointer obfuscation
doc: Add rcutree.kthread_prio pointer to stallwarn.txt
torture: Expand last_ts variable in kvm-test-1-run.sh
rcutorture: Test TREE03 with the threadirqs kernel boot parameter
rcutorture: Emulate userspace sojourn during call_rcu() floods
rcutorture: Aggressive forward-progress tests shouldn't block shutdown
rcu: Remove redundant "if" condition from rcu_gp_is_expedited()
arm: Use common outgoing-CPU-notification code
rcu/nocb: Rename rcu_data fields to prepare for forward-progress work
rcu/nocb: Update comments to prepare for forward-progress work
rcu/nocb: Provide separate no-CBs grace-period kthreads
rcu/nocb: Rename nocb_follower_wait() to nocb_cb_wait()
rcu/nocb: Rename wake_nocb_leader() to wake_nocb_gp()
rcu/nocb: Rename __wake_nocb_leader() to __wake_nocb_gp()
rcu/nocb: Rename wake_nocb_leader_defer() to wake_nocb_gp_defer()
rcu/nocb: Rename rcu_organize_nocb_kthreads() local variable
rcu/nocb: Rename and document no-CB CB kthread sleep trace event
rcu/nocb: Rename rcu_nocb_leader_stride kernel boot parameter
rcu/nocb: Print gp/cb kthread hierarchy if dump_tree
rcu/nocb: Use separate flag to indicate disabled ->cblist
rcu/nocb: Use separate flag to indicate offloaded ->cblist
rcu/nocb: Add checks for offloaded callback processing
rcu/nocb: Make rcutree_migrate_callbacks() start at leaf rcu_node structure
rcu/nocb: Check for deferred nocb wakeups before nohz_full early exit
rcu/nocb: Remove deferred wakeup checks for extended quiescent states
rcu/nocb: Allow lockless use of rcu_segcblist_restempty()
rcu/nocb: Allow lockless use of rcu_segcblist_empty()
rcu/nocb: Leave ->cblist enabled for no-CBs CPUs
rcu/nocb: Use rcu_segcblist for no-CBs CPUs
rcu/nocb: Remove obsolete nocb_head and nocb_tail fields
rcu/nocb: Remove obsolete nocb_q_count and nocb_q_count_lazy fields
rcu/nocb: Remove obsolete nocb_cb_tail and nocb_cb_head fields
rcu/nocb: Remove obsolete nocb_gp_head and nocb_gp_tail fields
rcu/nocb: Use build-time no-CBs check in rcu_do_batch()
rcu/nocb: Use build-time no-CBs check in rcu_core()
rcu/nocb: Use build-time no-CBs check in rcu_pending()
rcu/nocb: Suppress uninitialized false-positive in nocb_gp_wait()
rcu/nohz: Turn off tick for offloaded CPUs
rcu/nocb: Enable re-awakening under high callback load
rcu/nocb: Never downgrade ->nocb_defer_wakeup in wake_nocb_gp_defer()
rcu/nocb: Make __call_rcu_nocb_wake() safe for many callbacks
rcu/nocb: Avoid needless wakeups of no-CBs grace-period kthread
rcu/nocb: Avoid ->nocb_lock capture by corresponding CPU
rcu/nocb: Round down for number of no-CBs grace-period kthreads
rcu/nocb: Reduce contention at no-CBs registry-time CB advancement
rcu/nocb: Reduce contention at no-CBs invocation-done time
rcu/nocb: Reduce ->nocb_lock contention with separate ->nocb_gp_lock
rcu/nocb: Unconditionally advance and wake for excessive CBs
rcu/nocb: Atomic ->len field in rcu_segcblist structure
rcu/nocb: Add bypass callback queueing
rcu/nocb: EXP Check use and usefulness of ->nocb_lock_contended
rcu/nocb: Print no-CBs diagnostics when rcutorture writer unduly delayed
rcu/nocb: Avoid synchronous wakeup in __call_rcu_nocb_wake()
rcu/nocb: Advance CBs after merge in rcutree_migrate_callbacks()
rcu/nocb: Reduce nocb_cb_wait() leaf rcu_node ->lock contention
rcu/nocb: Reduce __call_rcu_nocb_wake() leaf rcu_node ->lock contention
rcu/nocb: Don't wake no-CBs GP kthread if timer posted under overload
MAINTAINERS: Update from paulmck@xxxxxxxxxxxxx to paulmck@xxxxxxxxxx

Peter Zijlstra (1):
idle: Prevent late-arriving interrupts from disrupting offline

Xiao Yang (1):
rcuperf: Fix perf_type module-parameter description


.../RCU/Design/Requirements/Requirements.html | 73 +-
Documentation/RCU/stallwarn.txt | 6 +
Documentation/admin-guide/kernel-parameters.txt | 17 +-
MAINTAINERS | 16 +-
arch/arm/kernel/smp.c | 6 +-
arch/powerpc/include/asm/kvm_book3s_64.h | 2 +-
arch/x86/pci/mmconfig-shared.c | 5 +-
drivers/acpi/osl.c | 6 +-
drivers/base/base.h | 1 +
drivers/base/core.c | 12 +
drivers/base/power/runtime.c | 15 +-
include/linux/rcu_segcblist.h | 9 +
include/linux/rcu_sync.h | 4 +-
include/linux/rculist.h | 36 +-
include/linux/rcupdate.h | 9 +-
include/linux/rcutiny.h | 2 +-
include/trace/events/rcu.h | 4 +-
kernel/locking/lockdep.c | 2 +-
kernel/rcu/Kconfig.debug | 11 +
kernel/rcu/rcu.h | 1 +
kernel/rcu/rcu_segcblist.c | 174 ++-
kernel/rcu/rcu_segcblist.h | 54 +-
kernel/rcu/rcuperf.c | 10 +-
kernel/rcu/rcutorture.c | 30 +-
kernel/rcu/srcutree.c | 5 +-
kernel/rcu/tree.c | 205 ++--
kernel/rcu/tree.h | 81 +-
kernel/rcu/tree_exp.h | 8 +-
kernel/rcu/tree_plugin.h | 1195 ++++++++++++--------
kernel/rcu/tree_stall.h | 9 +
kernel/rcu/update.c | 105 +-
kernel/sched/core.c | 57 +-
kernel/sched/idle.c | 5 +-
kernel/torture.c | 2 -
kernel/trace/ftrace_internal.h | 8 +-
kernel/trace/trace.c | 4 +-
net/ipv4/fib_frontend.c | 3 +-
tools/memory-model/Documentation/explanation.txt | 53 +-
tools/memory-model/README | 18 +-
tools/memory-model/scripts/checkghlitmus.sh | 0
tools/memory-model/scripts/checklitmushist.sh | 0
tools/memory-model/scripts/cmplitmushist.sh | 0
tools/memory-model/scripts/initlitmushist.sh | 0
tools/memory-model/scripts/judgelitmus.sh | 0
tools/memory-model/scripts/newlitmushist.sh | 0
tools/memory-model/scripts/parseargs.sh | 0
tools/memory-model/scripts/runlitmushist.sh | 0
.../selftests/rcutorture/bin/kvm-test-1-run.sh | 2 +-
.../selftests/rcutorture/configs/rcu/TREE03.boot | 1 +
49 files changed, 1480 insertions(+), 786 deletions(-)
mode change 100644 => 100755 tools/memory-model/scripts/checkghlitmus.sh
mode change 100644 => 100755 tools/memory-model/scripts/checklitmushist.sh
mode change 100644 => 100755 tools/memory-model/scripts/cmplitmushist.sh
mode change 100644 => 100755 tools/memory-model/scripts/initlitmushist.sh
mode change 100644 => 100755 tools/memory-model/scripts/judgelitmus.sh
mode change 100644 => 100755 tools/memory-model/scripts/newlitmushist.sh
mode change 100644 => 100755 tools/memory-model/scripts/parseargs.sh
mode change 100644 => 100755 tools/memory-model/scripts/runlitmushist.sh