* [GIT PULL rcu/next + tools/memory-model] RCU and LKMM commits for 5.3
@ 2019-06-27 22:19 Paul E. McKenney
2019-06-28 17:48 ` Ingo Molnar
0 siblings, 1 reply; 2+ messages in thread
From: Paul E. McKenney @ 2019-06-27 22:19 UTC (permalink / raw)
To: mingo
Cc: rcu, linux-kernel, stern, andrea.parri, benbjiang, joel, neeraju,
oleg, bigeasy, longman, zhenzhong.duan
Hello, Ingo,
This pull request contains the following changes:
1. RCU flavor consolidation cleanups and optmizations.
http://lkml.kernel.org/r/20190530145204.GA28526@linux.ibm.com
2. Documentation updates.
http://lkml.kernel.org/r/20190530145504.GA29820@linux.ibm.com
3. Miscellaneous fixes.
http://lkml.kernel.org/r/20190530145942.GA30318@linux.ibm.com
4. SRCU updates.
http://lkml.kernel.org/r/20190530150347.GA31311@linux.ibm.com
5. RCU-sync flavor consolidation.
http://lkml.kernel.org/r/20190530150816.GA32130@linux.ibm.com
6. Torture-test updates.
http://lkml.kernel.org/r/20190530151650.GA422@linux.ibm.com
7. Linux-kernel memory-consistency-model updates, most notably
the addition of plain C-language accesses.
http://lkml.kernel.org/r/20190530144202.GA26201@linux.ibm.com
http://lkml.kernel.org/r/Pine.LNX.4.44L0.1906201151210.1512-100000@iolanthe.rowland.org
http://lkml.kernel.org/r/Pine.LNX.4.44L0.1906201152370.1512-100000@iolanthe.rowland.org
http://lkml.kernel.org/r/Pine.LNX.4.44L0.1906201153470.1512-100000@iolanthe.rowland.org
These last three were relatively late additions responding to
LKML feedback. However, the resulting memory model passes its
rather large library of tests, and these changes are furthermore
required to correctly model some tricky situations involving
use of RCU without rcu_assign_pointer() and rcu_dereference().
These tricky sequences are not theoretical in nature, but rather
from fixes identified by Herbert Xu. It therefore seems best
to get these upstream sooner rather than later.
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 b989ff070574ad8b8621d866de0a8e9a65d42c80:
Merge LKMM and RCU commits (2019-06-24 09:12:39 -0700)
These changes do increase the size of the kernel by about 300 lines.
About 150 of this was due largely to improvements in rcutorture's
forward-progress testing. Not quite another 100 of this was due to
allowing Tree SRCU to be used from modules without needing to adjust the
size of the reserved region. Not quite an additional 100 of this was for
cleanups after the RCU flavor consolidation effort, including accidentally
fixing a self-deadlock encountered by Sebastian Siewior when booting
with the threadirqs kernel parameter. Finally, yet another not quite
100 of this was for adding LKMM's support for plain C-language accesses.
This totals to more than 300 because other changes removed code.
----------------------------------------------------------------
Alan Stern (7):
tools/memory-model: Prepare for data-race detection
tools/memory-model: Add definitions of plain and marked accesses
tools/memory-model: Add data-race detection
Documentation: atomic_t.txt: Explain ordering provided by smp_mb__{before,after}_atomic()
tools/memory-model: Expand definition of barrier
tools/memory-model: Change definition of rcu-fence
tools/memory-model: Improve data-race detection
Andrea Parri (3):
rcu: Don't return a value from rcu_assign_pointer()
tools/memory-model: Fix comment in MP+poonceonces.litmus
tools/memory-model: Do not use "herd" to refer to "herd7"
Jiang Biao (2):
rcu: Remove unused rdp local from synchronize_rcu_expedited()
rcu: Make __call_srcu static
Joel Fernandes (Google) (7):
lockdep: Add assertion to check if in an interrupt
rcu: Add checks for dynticks counters in rcu_is_cpu_rrupt_from_idle()
doc/rcuref: Document real world examples in kernel
srcu: Remove unused vmlinux srcu linker entries
module: Make srcu_struct ptr array as read-only
rcutorture: Select from only online CPUs
rcutorture: Add cpu0 to the set of CPUs to add jitter
Neeraj Upadhyay (2):
rcu: Dump specified number of blocked tasks
rcu: Correctly unlock root node in rcu_check_gp_start_stall()
Oleg Nesterov (4):
rcu/sync: Kill rcu_sync_type/gp_type
uprobes: Use DEFINE_STATIC_PERCPU_RWSEM() to initialize dup_mmap_sem
locking/percpu-rwsem: Add DEFINE_PERCPU_RWSEM(), use it to initialize cgroup_threadgroup_rwsem
rcu/sync: Simplify the state machine
Paul E. McKenney (34):
rcu: Check for wakeup-safe conditions in rcu_read_unlock_special()
rcu: Only do rcu_read_unlock_special() wakeups if expedited
rcu: Allow rcu_read_unlock_special() to raise_softirq() if in_irq()
rcu: Use irq_work to get scheduler's attention in clean context
rcu: Inline invoke_rcu_callbacks() into its sole remaining caller
rcu: Avoid self-IPI in sync_rcu_exp_select_node_cpus()
rcu: Avoid self-IPI in sync_sched_exp_online_cleanup()
rcu: Rename rcu_data's ->deferred_qs to ->exp_deferred_qs
rcu: Make kfree_rcu() ignore NULL pointers
rcu: Set a maximum limit for back-to-back callback invocation
doc: Remove ".vnet" from paulmck email addresses
srcu: Allocate per-CPU data for DEFINE_SRCU() in modules
rcutorture: Add cond_resched() to forward-progress free-up loop
rcutorture: Fix stutter_wait() return value and freelist checks
torture: Allow inter-stutter interval to be specified
torture: Make kvm-find-errors.sh and kvm-recheck.sh provide exit status
rcutorture: Provide rudimentary Makefile
rcutorture: Exempt tasks RCU from timely draining of grace periods
rcutorture: Exempt TREE01 from forward-progress testing
rcutorture: Give the scheduler a chance on PREEMPT && NO_HZ_FULL kernels
rcutorture: Halt forward-progress checks at end of run
rcutorture: Add trivial RCU implementation
torture: Capture qemu output
torture: Add function graph-tracing cheat sheet
torture: Run kernel build in source directory
torture: Make --cpus override idleness calculations
torture: Add --trust-make to suppress "make clean"
rcutorture: Dump trace buffer for callback pipe drain failures
torture: Suppress propagating trace_printk() warning
rcutorture: Upper case solves the case of the vanishing NULL pointer
rcu: Upgrade sync_exp_work_done() to smp_mb()
rcu: Fix irritating whitespace error in rcu_assign_pointer()
Merge branches 'consolidate.2019.05.28a', 'doc.2019.05.28a', 'fixes.2019.06.13a', 'srcu.2019.05.28a', 'sync.2019.05.28a' and 'torture.2019.05.28a' into HEAD
Merge LKMM and RCU commits
Sebastian Andrzej Siewior (2):
rcu: Enable elimination of Tree-RCU softirq processing
rcutorture: Tweak kvm options
Waiman Long (1):
rcu: Force inlining of rcu_read_lock()
Zhenzhong Duan (1):
doc: Fixup definition of rcupdate.rcu_task_stall_timeout
Documentation/RCU/rcuref.txt | 21 +-
Documentation/RCU/stallwarn.txt | 2 +-
Documentation/RCU/whatisRCU.txt | 8 +-
Documentation/admin-guide/kernel-parameters.txt | 6 +
Documentation/atomic_t.txt | 17 +-
Documentation/core-api/circular-buffers.rst | 2 +-
Documentation/memory-barriers.txt | 2 +-
.../translations/ko_KR/memory-barriers.txt | 2 +-
include/linux/lockdep.h | 7 +
include/linux/module.h | 5 +
include/linux/percpu-rwsem.h | 10 +-
include/linux/rcu_sync.h | 40 ++--
include/linux/rcupdate.h | 21 +-
include/linux/sched.h | 2 +-
include/linux/srcutree.h | 14 +-
include/linux/torture.h | 2 +-
kernel/cgroup/cgroup.c | 3 +-
kernel/events/uprobes.c | 4 +-
kernel/locking/locktorture.c | 2 +-
kernel/locking/percpu-rwsem.c | 2 +-
kernel/module.c | 5 +
kernel/rcu/rcu.h | 5 +
kernel/rcu/rcutorture.c | 96 +++++++--
kernel/rcu/srcutree.c | 69 ++++++-
kernel/rcu/sync.c | 214 ++++++++++-----------
kernel/rcu/tree.c | 164 +++++++++++++---
kernel/rcu/tree.h | 6 +-
kernel/rcu/tree_exp.h | 53 +++--
kernel/rcu/tree_plugin.h | 195 ++++++-------------
kernel/rcu/tree_stall.h | 4 +-
kernel/rcu/update.c | 13 ++
kernel/torture.c | 23 ++-
tools/include/linux/rcu.h | 4 +-
tools/memory-model/linux-kernel.bell | 6 +
tools/memory-model/linux-kernel.cat | 102 +++++++---
tools/memory-model/linux-kernel.def | 1 +
.../litmus-tests/MP+poonceonces.litmus | 2 +-
tools/memory-model/litmus-tests/README | 2 +-
tools/memory-model/lock.cat | 2 +-
tools/memory-model/scripts/README | 4 +-
tools/memory-model/scripts/checkalllitmus.sh | 2 +-
tools/memory-model/scripts/checklitmus.sh | 2 +-
tools/memory-model/scripts/parseargs.sh | 2 +-
tools/memory-model/scripts/runlitmushist.sh | 2 +-
tools/testing/radix-tree/linux/rcupdate.h | 2 +-
tools/testing/selftests/rcutorture/Makefile | 3 +
.../testing/selftests/rcutorture/bin/configinit.sh | 39 ++--
tools/testing/selftests/rcutorture/bin/cpus2use.sh | 5 +
.../testing/selftests/rcutorture/bin/functions.sh | 13 +-
tools/testing/selftests/rcutorture/bin/jitter.sh | 13 +-
.../testing/selftests/rcutorture/bin/kvm-build.sh | 9 +-
.../selftests/rcutorture/bin/kvm-find-errors.sh | 3 +
.../selftests/rcutorture/bin/kvm-recheck.sh | 13 +-
.../selftests/rcutorture/bin/kvm-test-1-run.sh | 23 +--
tools/testing/selftests/rcutorture/bin/kvm.sh | 14 +-
.../selftests/rcutorture/bin/parse-build.sh | 2 +-
.../selftests/rcutorture/bin/parse-console.sh | 1 +
.../selftests/rcutorture/configs/rcu/CFcommon | 3 +
.../selftests/rcutorture/configs/rcu/TREE01.boot | 1 +
.../selftests/rcutorture/configs/rcu/TRIVIAL | 14 ++
.../selftests/rcutorture/configs/rcu/TRIVIAL.boot | 3 +
61 files changed, 845 insertions(+), 466 deletions(-)
create mode 100644 tools/testing/selftests/rcutorture/Makefile
create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL.boot
^ permalink raw reply [flat|nested] 2+ messages in thread
* Re: [GIT PULL rcu/next + tools/memory-model] RCU and LKMM commits for 5.3
2019-06-27 22:19 [GIT PULL rcu/next + tools/memory-model] RCU and LKMM commits for 5.3 Paul E. McKenney
@ 2019-06-28 17:48 ` Ingo Molnar
0 siblings, 0 replies; 2+ messages in thread
From: Ingo Molnar @ 2019-06-28 17:48 UTC (permalink / raw)
To: Paul E. McKenney
Cc: rcu, linux-kernel, stern, andrea.parri, benbjiang, joel, neeraju,
oleg, bigeasy, longman, zhenzhong.duan
* Paul E. McKenney <paulmck@linux.ibm.com> wrote:
> Hello, Ingo,
>
> This pull request contains the following changes:
>
> 1. RCU flavor consolidation cleanups and optmizations.
>
> http://lkml.kernel.org/r/20190530145204.GA28526@linux.ibm.com
>
> 2. Documentation updates.
>
> http://lkml.kernel.org/r/20190530145504.GA29820@linux.ibm.com
>
> 3. Miscellaneous fixes.
>
> http://lkml.kernel.org/r/20190530145942.GA30318@linux.ibm.com
>
> 4. SRCU updates.
>
> http://lkml.kernel.org/r/20190530150347.GA31311@linux.ibm.com
>
> 5. RCU-sync flavor consolidation.
>
> http://lkml.kernel.org/r/20190530150816.GA32130@linux.ibm.com
>
> 6. Torture-test updates.
>
> http://lkml.kernel.org/r/20190530151650.GA422@linux.ibm.com
>
> 7. Linux-kernel memory-consistency-model updates, most notably
> the addition of plain C-language accesses.
>
> http://lkml.kernel.org/r/20190530144202.GA26201@linux.ibm.com
> http://lkml.kernel.org/r/Pine.LNX.4.44L0.1906201151210.1512-100000@iolanthe.rowland.org
> http://lkml.kernel.org/r/Pine.LNX.4.44L0.1906201152370.1512-100000@iolanthe.rowland.org
> http://lkml.kernel.org/r/Pine.LNX.4.44L0.1906201153470.1512-100000@iolanthe.rowland.org
>
> These last three were relatively late additions responding to
> LKML feedback. However, the resulting memory model passes its
> rather large library of tests, and these changes are furthermore
> required to correctly model some tricky situations involving
> use of RCU without rcu_assign_pointer() and rcu_dereference().
> These tricky sequences are not theoretical in nature, but rather
> from fixes identified by Herbert Xu. It therefore seems best
> to get these upstream sooner rather than later.
>
> 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 b989ff070574ad8b8621d866de0a8e9a65d42c80:
>
> Merge LKMM and RCU commits (2019-06-24 09:12:39 -0700)
>
> These changes do increase the size of the kernel by about 300 lines.
> About 150 of this was due largely to improvements in rcutorture's
> forward-progress testing. Not quite another 100 of this was due to
> allowing Tree SRCU to be used from modules without needing to adjust the
> size of the reserved region. Not quite an additional 100 of this was for
> cleanups after the RCU flavor consolidation effort, including accidentally
> fixing a self-deadlock encountered by Sebastian Siewior when booting
> with the threadirqs kernel parameter. Finally, yet another not quite
> 100 of this was for adding LKMM's support for plain C-language accesses.
> This totals to more than 300 because other changes removed code.
>
> ----------------------------------------------------------------
> Alan Stern (7):
> tools/memory-model: Prepare for data-race detection
> tools/memory-model: Add definitions of plain and marked accesses
> tools/memory-model: Add data-race detection
> Documentation: atomic_t.txt: Explain ordering provided by smp_mb__{before,after}_atomic()
> tools/memory-model: Expand definition of barrier
> tools/memory-model: Change definition of rcu-fence
> tools/memory-model: Improve data-race detection
>
> Andrea Parri (3):
> rcu: Don't return a value from rcu_assign_pointer()
> tools/memory-model: Fix comment in MP+poonceonces.litmus
> tools/memory-model: Do not use "herd" to refer to "herd7"
>
> Jiang Biao (2):
> rcu: Remove unused rdp local from synchronize_rcu_expedited()
> rcu: Make __call_srcu static
>
> Joel Fernandes (Google) (7):
> lockdep: Add assertion to check if in an interrupt
> rcu: Add checks for dynticks counters in rcu_is_cpu_rrupt_from_idle()
> doc/rcuref: Document real world examples in kernel
> srcu: Remove unused vmlinux srcu linker entries
> module: Make srcu_struct ptr array as read-only
> rcutorture: Select from only online CPUs
> rcutorture: Add cpu0 to the set of CPUs to add jitter
>
> Neeraj Upadhyay (2):
> rcu: Dump specified number of blocked tasks
> rcu: Correctly unlock root node in rcu_check_gp_start_stall()
>
> Oleg Nesterov (4):
> rcu/sync: Kill rcu_sync_type/gp_type
> uprobes: Use DEFINE_STATIC_PERCPU_RWSEM() to initialize dup_mmap_sem
> locking/percpu-rwsem: Add DEFINE_PERCPU_RWSEM(), use it to initialize cgroup_threadgroup_rwsem
> rcu/sync: Simplify the state machine
>
> Paul E. McKenney (34):
> rcu: Check for wakeup-safe conditions in rcu_read_unlock_special()
> rcu: Only do rcu_read_unlock_special() wakeups if expedited
> rcu: Allow rcu_read_unlock_special() to raise_softirq() if in_irq()
> rcu: Use irq_work to get scheduler's attention in clean context
> rcu: Inline invoke_rcu_callbacks() into its sole remaining caller
> rcu: Avoid self-IPI in sync_rcu_exp_select_node_cpus()
> rcu: Avoid self-IPI in sync_sched_exp_online_cleanup()
> rcu: Rename rcu_data's ->deferred_qs to ->exp_deferred_qs
> rcu: Make kfree_rcu() ignore NULL pointers
> rcu: Set a maximum limit for back-to-back callback invocation
> doc: Remove ".vnet" from paulmck email addresses
> srcu: Allocate per-CPU data for DEFINE_SRCU() in modules
> rcutorture: Add cond_resched() to forward-progress free-up loop
> rcutorture: Fix stutter_wait() return value and freelist checks
> torture: Allow inter-stutter interval to be specified
> torture: Make kvm-find-errors.sh and kvm-recheck.sh provide exit status
> rcutorture: Provide rudimentary Makefile
> rcutorture: Exempt tasks RCU from timely draining of grace periods
> rcutorture: Exempt TREE01 from forward-progress testing
> rcutorture: Give the scheduler a chance on PREEMPT && NO_HZ_FULL kernels
> rcutorture: Halt forward-progress checks at end of run
> rcutorture: Add trivial RCU implementation
> torture: Capture qemu output
> torture: Add function graph-tracing cheat sheet
> torture: Run kernel build in source directory
> torture: Make --cpus override idleness calculations
> torture: Add --trust-make to suppress "make clean"
> rcutorture: Dump trace buffer for callback pipe drain failures
> torture: Suppress propagating trace_printk() warning
> rcutorture: Upper case solves the case of the vanishing NULL pointer
> rcu: Upgrade sync_exp_work_done() to smp_mb()
> rcu: Fix irritating whitespace error in rcu_assign_pointer()
> Merge branches 'consolidate.2019.05.28a', 'doc.2019.05.28a', 'fixes.2019.06.13a', 'srcu.2019.05.28a', 'sync.2019.05.28a' and 'torture.2019.05.28a' into HEAD
> Merge LKMM and RCU commits
>
> Sebastian Andrzej Siewior (2):
> rcu: Enable elimination of Tree-RCU softirq processing
> rcutorture: Tweak kvm options
>
> Waiman Long (1):
> rcu: Force inlining of rcu_read_lock()
>
> Zhenzhong Duan (1):
> doc: Fixup definition of rcupdate.rcu_task_stall_timeout
>
> Documentation/RCU/rcuref.txt | 21 +-
> Documentation/RCU/stallwarn.txt | 2 +-
> Documentation/RCU/whatisRCU.txt | 8 +-
> Documentation/admin-guide/kernel-parameters.txt | 6 +
> Documentation/atomic_t.txt | 17 +-
> Documentation/core-api/circular-buffers.rst | 2 +-
> Documentation/memory-barriers.txt | 2 +-
> .../translations/ko_KR/memory-barriers.txt | 2 +-
> include/linux/lockdep.h | 7 +
> include/linux/module.h | 5 +
> include/linux/percpu-rwsem.h | 10 +-
> include/linux/rcu_sync.h | 40 ++--
> include/linux/rcupdate.h | 21 +-
> include/linux/sched.h | 2 +-
> include/linux/srcutree.h | 14 +-
> include/linux/torture.h | 2 +-
> kernel/cgroup/cgroup.c | 3 +-
> kernel/events/uprobes.c | 4 +-
> kernel/locking/locktorture.c | 2 +-
> kernel/locking/percpu-rwsem.c | 2 +-
> kernel/module.c | 5 +
> kernel/rcu/rcu.h | 5 +
> kernel/rcu/rcutorture.c | 96 +++++++--
> kernel/rcu/srcutree.c | 69 ++++++-
> kernel/rcu/sync.c | 214 ++++++++++-----------
> kernel/rcu/tree.c | 164 +++++++++++++---
> kernel/rcu/tree.h | 6 +-
> kernel/rcu/tree_exp.h | 53 +++--
> kernel/rcu/tree_plugin.h | 195 ++++++-------------
> kernel/rcu/tree_stall.h | 4 +-
> kernel/rcu/update.c | 13 ++
> kernel/torture.c | 23 ++-
> tools/include/linux/rcu.h | 4 +-
> tools/memory-model/linux-kernel.bell | 6 +
> tools/memory-model/linux-kernel.cat | 102 +++++++---
> tools/memory-model/linux-kernel.def | 1 +
> .../litmus-tests/MP+poonceonces.litmus | 2 +-
> tools/memory-model/litmus-tests/README | 2 +-
> tools/memory-model/lock.cat | 2 +-
> tools/memory-model/scripts/README | 4 +-
> tools/memory-model/scripts/checkalllitmus.sh | 2 +-
> tools/memory-model/scripts/checklitmus.sh | 2 +-
> tools/memory-model/scripts/parseargs.sh | 2 +-
> tools/memory-model/scripts/runlitmushist.sh | 2 +-
> tools/testing/radix-tree/linux/rcupdate.h | 2 +-
> tools/testing/selftests/rcutorture/Makefile | 3 +
> .../testing/selftests/rcutorture/bin/configinit.sh | 39 ++--
> tools/testing/selftests/rcutorture/bin/cpus2use.sh | 5 +
> .../testing/selftests/rcutorture/bin/functions.sh | 13 +-
> tools/testing/selftests/rcutorture/bin/jitter.sh | 13 +-
> .../testing/selftests/rcutorture/bin/kvm-build.sh | 9 +-
> .../selftests/rcutorture/bin/kvm-find-errors.sh | 3 +
> .../selftests/rcutorture/bin/kvm-recheck.sh | 13 +-
> .../selftests/rcutorture/bin/kvm-test-1-run.sh | 23 +--
> tools/testing/selftests/rcutorture/bin/kvm.sh | 14 +-
> .../selftests/rcutorture/bin/parse-build.sh | 2 +-
> .../selftests/rcutorture/bin/parse-console.sh | 1 +
> .../selftests/rcutorture/configs/rcu/CFcommon | 3 +
> .../selftests/rcutorture/configs/rcu/TREE01.boot | 1 +
> .../selftests/rcutorture/configs/rcu/TRIVIAL | 14 ++
> .../selftests/rcutorture/configs/rcu/TRIVIAL.boot | 3 +
> 61 files changed, 845 insertions(+), 466 deletions(-)
> create mode 100644 tools/testing/selftests/rcutorture/Makefile
> create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL
> create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/TRIVIAL.boot
Pulled, thanks a lot Paul!
Ingo
^ permalink raw reply [flat|nested] 2+ messages in thread
end of thread, other threads:[~2019-06-28 17:49 UTC | newest]
Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2019-06-27 22:19 [GIT PULL rcu/next + tools/memory-model] RCU and LKMM commits for 5.3 Paul E. McKenney
2019-06-28 17:48 ` Ingo Molnar
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).