[GIT PULL tip/core/rcu] RCU, LKMM, and KCSAN commits for v5.13
From: Paul E. McKenney
Date: Wed Mar 31 2021 - 15:30:34 EST
Hello, Ingo!
This pull request contains changes for RCU, KCSAN, and LKMM. You can
pull the entire group using branch for-mingo. Or, if you prefer, you
can pull them separately, using for-mingo-rcu to pull the RCU changes,
for-mingo-kcsan to pull the KCSAN changes, and for-mingo-lkmm to pull
the LKMM changes.
The changes are as follows:
1. RCU updates (for-mingo-rcu):
a. Bitmap support for "N" as alias for last bit, courtesy
of Paul Gortmaker. This series is used by rcu and
rcutorture, and the lib/bitmap.c portions have appropriate
reviews and acks.
https://lore.kernel.org/lkml/20210303235526.GA21868@paulmck-ThinkPad-P72/
b. Miscellaneous fixes.
https://lore.kernel.org/lkml/20210303235958.GA22373@paulmck-ThinkPad-P72/
c. kvfree_rcu updates, courtesy of Uladzislau Rezki.
https://lore.kernel.org/lkml/20210304001044.GA22871@paulmck-ThinkPad-P72/
d. mm_dump_obj() updates. One of these is to mm, but is suggested by
Andrew Morton.
https://lore.kernel.org/linux-mm/20210304001623.GA23196@paulmck-ThinkPad-P72/
e. RCU callback offloading updates, courtesy of Frederic
Weisbecker and Jiapeng Chong.
https://lore.kernel.org/lkml/20210304002225.GA23492@paulmck-ThinkPad-P72/
f. Polling RCU grace-period interfaces.
https://lore.kernel.org/lkml/20210304002605.GA23785@paulmck-ThinkPad-P72/
g. Realtime-related RCU updates.
https://lore.kernel.org/lkml/20210304002919.GA24003@paulmck-ThinkPad-P72/
h. Tasks-RCU updates.
https://lore.kernel.org/lkml/20210304003226.GA24261@paulmck-ThinkPad-P72/
i. Torture-test updates.
https://lore.kernel.org/lkml/20210304003431.GA24413@paulmck-ThinkPad-P72/
j. Torture-test scripting updates.
https://lore.kernel.org/lkml/20210304003750.GA24696@paulmck-ThinkPad-P72/
2. Kernel concurrency sanitizer (KCSAN) updates from Marco Elver.
https://lore.kernel.org/lkml/20210304004022.GA25013@paulmck-ThinkPad-P72/
3. Linux-kernel memory model (LKMM) updates.
https://lore.kernel.org/lkml/20210304004438.GA25271@paulmck-ThinkPad-P72/
All of the commits in this pull request have been subjected to subjected
to the kbuild test robot and -next testing, and are available in the
git repository based on v5.12-rc2 at:
git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu.git for-mingo
for you to fetch changes up to dd44ee94db05b80fef1469155c374caad58d8a2e:
Merge branch 'lkmm.2021.03.15a' into HEAD (2021-03-24 17:21:26 -0700)
----------------------------------------------------------------
Akira Yokosawa (2):
rculist: Replace reference to atomic_ops.rst
tools/memory-model: Remove reference to atomic_ops.rst
Frederic Weisbecker (11):
rcu: Remove superfluous rdp fetch
rcu/nocb: Detect unsafe checks for offloaded rdp
rcu/nocb: Comment the reason behind BH disablement on batch processing
rcu/nocb: Forbid NOCB toggling on offline CPUs
rcu/nocb: Avoid confusing double write of rdp->nocb_cb_sleep
rcu/nocb: Only (re-)initialize segcblist when needed on CPU up
rcu/nocb: Rename nocb_gp_update_state to nocb_gp_update_state_deoffloading
rcu/nocb: Fix missed nocb_timer requeue
rcu/nocb: Disable bypass when CPU isn't completely offloaded
rcu/nocb: Remove stale comment above rcu_segcblist_offload()
rcu/nocb: Move trace_rcu_nocb_wake() calls outside nocb_lock when possible
Jiapeng Chong (1):
rcu: Make nocb_nobypass_lim_per_jiffy static
Lukas Bulwahn (1):
rcu-tasks: Rectify kernel-doc for struct rcu_tasks
Marco Elver (4):
kcsan, debugfs: Move debugfs file creation out of early init
kcsan: Make test follow KUnit style recommendations
kcsan: Switch to KUNIT_CASE_PARAM for parameterized tests
kcsan: Add missing license and copyright headers
Mauro Carvalho Chehab (2):
rcu: Fix kfree_rcu() docbook errors
doc: Update rcu_dereference.rst reference
Neeraj Upadhyay (1):
rcu: Fix CPU-offline trace in rcutree_dying_cpu
Paul E. McKenney (49):
rcutorture: Use "all" and "N" in "nohz_full" and "rcu_nocbs"
kvfree_rcu: Use __GFP_NOMEMALLOC for single-argument kvfree_rcu()
kvfree_rcu: Make krc_this_cpu_unlock() use raw_spin_unlock_irqrestore()
mm: Don't build mm_dump_obj() on CONFIG_PRINTK=n kernels
rcutorture: Add crude tests for mem_dump_obj()
rcu: Expedite deboost in case of deferred quiescent state
rcutorture: Make TREE03 use real-time tree.use_softirq setting
rcutorture: Fix testing of RCU priority boosting
rcu: Make rcu_read_unlock_special() expedite strict grace periods
torture: Make jitter.sh handle large systems
rcu-tasks: Add block comment laying out RCU Tasks Trace design
torturescript: Don't rerun failed rcutorture builds
torture: Allow 1G of memory for torture.sh kvfree testing
torture: Provide bare-metal modprobe-based advice
torture: Improve readability of the testid.txt file
rcuscale: Disable verbose torture-test output
refscale: Disable verbose torture-test output
torture: Move build/run synchronization files into scenario directories
torture: Use file-based protocol to mark batch's runs complete
torture: Use "jittering" file to control jitter.sh execution
torture: Eliminate jitter_pids file
torture: Reverse jittering and duration parameters for jitter.sh
softirq: Don't try waking ksoftirqd before it has been spawned
docs: Correctly spell Stephen Hemminger's name
rcu: Add explicit barrier() to __rcu_read_unlock()
tools/memory-model: Add access-marking documentation
rcu: Provide polling interfaces for Tree RCU grace periods
torture: Abstract jitter.sh start/stop into scripts
torture: Record TORTURE_KCONFIG_GDB_ARG in qemu-cmd
torture: Extract kvm-test-1-run-qemu.sh from kvm-test-1-run.sh
torture: Record jitter start/stop commands
torture: Record kvm-test-1-run.sh and kvm-test-1-run-qemu.sh PIDs
torture: Remove no-mpstat error message
torture: Rename SRCU-t and SRCU-u to avoid lowercase characters
torture: Make upper-case-only no-dot no-slash scenario names official
torture: De-capitalize TORTURE_SUITE
torture: Create a "batches" file for build reuse
torture: Add kvm-again.sh to rerun a previous torture-test
torture: Add --duration argument to kvm-again.sh
torture: Make kvm-transform.sh update jitter commands
torture: Make TORTURE_TRUST_MAKE available in kvm-again.sh environment
torture: Print proper vmlinux path for kvm-again.sh runs
torture: Consolidate qemu-cmd duration editing into kvm-transform.sh
torture: Fix kvm.sh --datestamp regex check
rcu: Provide polling interfaces for Tiny RCU grace periods
rcutorture: Test start_poll_synchronize_rcu() and poll_state_synchronize_rcu()
Merge branches 'bitmaprange.2021.03.08a', 'fixes.2021.03.15a', 'kvfree_rcu.2021.03.08a', 'mmdumpobj.2021.03.08a', 'nocb.2021.03.15a', 'poll.2021.03.24a', 'rt.2021.03.08a', 'tasks.2021.03.08a', 'torture.2021.03.08a' and 'torturescript.2021.03.22a' into HEAD
Merge branch 'kcsan.2021.03.08a' into HEAD
Merge branch 'lkmm.2021.03.15a' into HEAD
Paul Gortmaker (8):
lib: test_bitmap: clearly separate ERANGE from EINVAL tests.
lib: test_bitmap: add tests to trigger ERANGE case.
lib: test_bitmap: add more start-end:offset/len tests
lib: bitmap: fold nbits into region struct
lib: bitmap: move ERANGE check from set_region to check_region
lib: bitmap: support "N" as an alias for size of bitmap
lib: test_bitmap: add tests for "N" alias
rcu: deprecate "all" option to rcu_nocbs=
Sangmoon Kim (1):
rcu/tree: Add a trace event for RCU CPU stall warnings
Stephen Zhang (2):
torture: Replace torture_init_begin string with %s
rcutorture: Replace rcu_torture_stall string with %s
Uladzislau Rezki (Sony) (4):
kvfree_rcu: Directly allocate page for single-argument case
kvfree_rcu: Replace __GFP_RETRY_MAYFAIL by __GFP_NORETRY
kvfree_rcu: Use same set of GFP flags as does single-argument
rcuscale: Add kfree_rcu() single-argument scale test
Zhouyi Zhou (1):
rcu: Remove spurious instrumentation_end() in rcu_nmi_enter()
Documentation/RCU/RTFP.txt | 2 +-
Documentation/admin-guide/kernel-parameters.rst | 7 +
Documentation/admin-guide/kernel-parameters.txt | 16 +-
Documentation/dev-tools/kcsan.rst | 3 +
include/linux/kcsan-checks.h | 6 +
include/linux/kcsan.h | 7 +
include/linux/mm.h | 4 +
include/linux/rcu_segcblist.h | 7 +-
include/linux/rculist_nulls.h | 2 +-
include/linux/rcupdate.h | 2 +-
include/linux/rcutiny.h | 7 +-
include/linux/rcutree.h | 2 +
include/linux/slab.h | 2 +
include/linux/vmalloc.h | 2 +-
include/trace/events/rcu.h | 28 ++
kernel/kcsan/Makefile | 4 +-
kernel/kcsan/atomic.h | 5 +
kernel/kcsan/core.c | 7 +-
kernel/kcsan/debugfs.c | 9 +-
kernel/kcsan/encoding.h | 5 +
kernel/kcsan/kcsan.h | 8 +-
kernel/kcsan/{kcsan-test.c => kcsan_test.c} | 118 +++--
kernel/kcsan/report.c | 5 +
kernel/kcsan/selftest.c | 5 +
kernel/rcu/rcu_segcblist.c | 3 +-
kernel/rcu/rcuscale.c | 15 +-
kernel/rcu/rcutorture.c | 93 ++--
kernel/rcu/tasks.h | 40 +-
kernel/rcu/tiny.c | 40 ++
kernel/rcu/tree.c | 169 ++++++--
kernel/rcu/tree_exp.h | 1 +
kernel/rcu/tree_plugin.h | 252 +++++++----
kernel/rcu/tree_stall.h | 2 +
kernel/softirq.c | 2 +-
kernel/torture.c | 6 +-
lib/Kconfig.kcsan | 5 +-
lib/bitmap.c | 49 ++-
lib/test_bitmap.c | 46 +-
mm/slab.c | 2 +
mm/slab.h | 2 +
mm/slab_common.c | 4 +
mm/slob.c | 2 +
mm/slub.c | 2 +
mm/util.c | 3 +
mm/vmalloc.c | 2 +
.../memory-model/Documentation/access-marking.txt | 479 +++++++++++++++++++++
tools/memory-model/Documentation/glossary.txt | 2 +-
tools/memory-model/Documentation/simple.txt | 1 -
tools/testing/selftests/rcutorture/bin/cpus2use.sh | 1 -
tools/testing/selftests/rcutorture/bin/jitter.sh | 20 +-
.../selftests/rcutorture/bin/jitterstart.sh | 37 ++
.../testing/selftests/rcutorture/bin/jitterstop.sh | 23 +
.../testing/selftests/rcutorture/bin/kvm-again.sh | 199 +++++++++
.../selftests/rcutorture/bin/kvm-recheck.sh | 2 +-
.../rcutorture/bin/kvm-test-1-run-batch.sh | 67 +++
.../rcutorture/bin/kvm-test-1-run-qemu.sh | 176 ++++++++
.../selftests/rcutorture/bin/kvm-test-1-run.sh | 218 +++-------
.../selftests/rcutorture/bin/kvm-transform.sh | 54 ++-
tools/testing/selftests/rcutorture/bin/kvm.sh | 98 +++--
tools/testing/selftests/rcutorture/bin/torture.sh | 2 +-
.../selftests/rcutorture/configs/rcu/CFLIST | 4 +-
.../rcutorture/configs/rcu/{SRCU-t => SRCU-T} | 0
.../configs/rcu/{SRCU-t.boot => SRCU-T.boot} | 0
.../rcutorture/configs/rcu/{SRCU-u => SRCU-U} | 0
.../configs/rcu/{SRCU-u.boot => SRCU-U.boot} | 0
.../selftests/rcutorture/configs/rcu/TREE03.boot | 1 +
.../selftests/rcutorture/configs/rcu/TREE04.boot | 2 +-
.../selftests/rcutorture/configs/rcu/TREE08.boot | 2 +-
.../rcutorture/configs/rcuscale/ver_functions.sh | 2 +-
.../rcutorture/configs/refscale/ver_functions.sh | 2 +-
70 files changed, 1895 insertions(+), 500 deletions(-)
rename kernel/kcsan/{kcsan-test.c => kcsan_test.c} (94%)
create mode 100644 tools/memory-model/Documentation/access-marking.txt
create mode 100644 tools/testing/selftests/rcutorture/bin/jitterstart.sh
create mode 100644 tools/testing/selftests/rcutorture/bin/jitterstop.sh
create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-again.sh
create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-test-1-run-batch.sh
create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-test-1-run-qemu.sh
rename tools/testing/selftests/rcutorture/configs/rcu/{SRCU-t => SRCU-T} (100%)
rename tools/testing/selftests/rcutorture/configs/rcu/{SRCU-t.boot => SRCU-T.boot} (100%)
rename tools/testing/selftests/rcutorture/configs/rcu/{SRCU-u => SRCU-U} (100%)
rename tools/testing/selftests/rcutorture/configs/rcu/{SRCU-u.boot => SRCU-U.boot} (100%)