RCU Archive on lore.kernel.org
 help / color / Atom feed
* [GIT PULL rcu/next + tools/memory-model] RCU and LKMM commits for 5.4
@ 2019-08-22 15:18 Paul E. McKenney
  2019-08-22 18:54 ` Ingo Molnar
  0 siblings, 1 reply; 5+ messages in thread
From: Paul E. McKenney @ 2019-08-22 15:18 UTC (permalink / raw)
  To: mingo
  Cc: rcu, linux-kernel, joel, parri.andrea, byungchul.park, peterz,
	mojha, ice_yangxiao, efremov, edumazet

Hello, Ingo,

This pull request contain the following changes:

1.	A few more RCU flavor consolidation cleanups.


2.	Miscellaneous fixes.


	In addition, this includes a spelling fix in a comment and
	an email-address change in MAINTAINERS:


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


4.	Torture-test updates.

	Fat fingered.  :-/  Please let me know if you would prefer that
	I resend, then redo this full pull request next week.

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


6.	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.

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


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


	(But only patches 1-10, as patch 10 proved to be quite valuable,
	but patches 11-14 need more work and testing time.)

9.	LKMM updates.


	(But only patches 1-3, as the remainder are either new or are
	related to ongoing work to verify LKMM against hardware memory

Please note that this series encountered a merge conflict in -next:


Stephen's resolution looks good to me.

All of these changes have been subjected to 0day Test Robot and -next
testing, and are available in the Git repository at:

  git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git for-mingo

for you to fetch changes up to 07f038a408fb215fd656de78304b6ff4c7e4e490:

  Merge LKMM and RCU commits (2019-08-13 14:41:48 -0700)

These changes do increase the size of the kernel by about 700 lines,
mostly due to the no-CBs CPU forward-progress improvements.  Given that
RCU forward progress has started to become an issue over the past year
or so, these changes do not appear to me to be in any way optional.

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()

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 (67):
      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
      Merge branches 'consolidate.2019.08.01b', 'fixes.2019.08.12a', 'lists.2019.08.13a' and 'torture.2019.08.01b' into HEAD
      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
      Merge LKMM and RCU commits

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                                        |    2 +-
 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/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 +
 48 files changed, 1472 insertions(+), 778 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

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, back to index

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-08-22 15:18 [GIT PULL rcu/next + tools/memory-model] RCU and LKMM commits for 5.4 Paul E. McKenney
2019-08-22 18:54 ` Ingo Molnar
2019-08-22 19:21   ` Paul E. McKenney
2019-08-24 12:01     ` Ingo Molnar
2019-08-24 13:32       ` Paul E. McKenney

RCU Archive on lore.kernel.org

Archives are clonable:
	git clone --mirror https://lore.kernel.org/rcu/0 rcu/git/0.git

	# If you have public-inbox 1.1+ installed, you may
	# initialize and index your mirror using the following commands:
	public-inbox-init -V2 rcu rcu/ https://lore.kernel.org/rcu \
	public-inbox-index rcu

Example config snippet for mirrors

Newsgroup available over NNTP:

AGPL code for this site: git clone https://public-inbox.org/public-inbox.git