RCU changes for v3.15
Subsystems (11)
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: 7de700e6806cafa30c70bc84478431a11197a5ea Merge branch 'rcu/next' of git://git.kernel.org/pub/scm/linux/kernel/git/paulmck/linux-rcu into core/rcu
Main changes:
* Torture-test changes, including refactoring of rcutorture and introduction of a vestigial locktorture.
* Real-time latency fixes.
* Documentation updates.
* Miscellaneous fixes.
Thanks,
Ingo
------------------>
Joe Perches (2):
rcu: Glue ASCII strings together
rcu: Indentation and spacing fixes.
Paul Bolle (2):
rcu: Disambiguate CONFIG_RCU_NOCB_CPUs
rcutorture: Rename TREE_RCU-Kconfig.txt
Paul E. McKenney (70):
documentation: Document call_rcu() safety mechanisms and limitations Documentation/memory-barriers.txt: ACCESS_ONCE() provides cache coherence Documentation/memory-barriers.txt: Conditional must use prior load Documentation/kernel-per-CPU-kthreads.txt: Workqueue affinity Documentation/memory-barriers.txt: Need barriers() for some control dependencies
documentation: Fix some inconsistencies in RTFP.txt
rcu: Add ACCESS_ONCE() to ->n_force_qs_lh accesses
rcu: Stop tracking FSF's postal address
rcu: Remove ACCESS_ONCE() from jiffies
rcu: Define rcu_assign_pointer() in terms of smp_store_release()
fs: Substitute rcu_access_pointer() for rcu_dereference_raw()
rcu: Optimize rcu_is_nocb_cpu() for RCU_NOCB_CPU_ALL
rcu: Optimize rcu_needs_cpu() for RCU_NOCB_CPU_ALL
rcu: Optimize RCU_FAST_NO_HZ for RCU_NOCB_CPU_ALL
rcutorture: Print grace-period performance statistics
rcutorture: Print script and arguments to standard output
rcutorture: Move common boot flags to kvm-test-1-rcu.sh
rcutorture: Allow kvm-test-1-rcu.sh to pause after build
rcutorture: Move common qemu flags to kvm-test-1.sh
rcutorture: Reduce SRCU-N number of CPUs
rcutorture: Enable concurrent rcutorture runs
rcutorture: Fix results-directory error message
rcutorture: Add dryrun capability
rcutorture: Handle multiple runs of the same test
rcutorture: Do better bin packing
rcutorture: Add comments, especially on bin packing.
rcutorture: Flag tests requiring more CPUs than are available
rcutorture: Print results directory when dumping results
rcutorture: Fix checkpatch complaint
rcutorture: Abstract rcu_torture_random()
rcutorture: Don't create results directory for dryruns
rcutorture: Abstract torture_param()
rcutorture: Rename PRINTK to TOROUT
rcutorture: Abstract TOROUT_STRING() and friends
rcutorture: Abstract torture_shutdown_absorb()
rcutorture: Abstract torture_shuffle()
rcutorture: Abstract torture_onoff()
rcutorture: Abstract torture-test initialization
rcutorture: Abstract torture-test cleanup
rcutorture: Print dates when doing parallel rcutorture runs
rcutorture: Abstract torture_shutdown_notify()
rcutorture: Privatize fullstop
rcutorture: Add diagnostic for unscheduled system shutdown
rcutorture: Abstract stutter_wait()
rcutorture: Apply ACCESS_ONCE() to racy fullstop accesses
rcutorture: Abstract torture_shutdown()
rcutorture: Clean up rcu_torture_init() error checking
rcutorture: Announce task creation
rcutorture: Fix rcutorture shutdown races
rcutorture: Fix missing-return bug in rcu_torture_barrier_init()
rcutorture: Abstract torture_create_kthread()
rcutorture: Abstract torture_stop_kthread()
rcutorture: Stop generic kthreads in torture_cleanup()
rcutorture: Abstract kvm-recheck.sh
locktorture: Add a lock-torture kernel module
rcutorture: Add an rcu_busted to test the test
rcutorture: Create config files for scripted test-the-test testing
rcutorture: Create CFcommon file for common Kconfig parameters
rcutorture: Remove RCU dependencies from ver_functions.sh API
rcutorture: Rename kvm-test-1-rcu.sh
rcutorture: Introduce "rcu" directory level underneath configs
locktorture: Add vestigial locktorture configuration
rcutorture: Gracefully handle NULL cleanup hooks
locktorture: Add kvm-recheck.sh plug-in for locktorture
rcutorture: Place kvm-test-1-run.sh output into res directory
rcutorture: Add a lock_busted to test the test
rcutorture: Save kvm.sh output to log Documentation/memory-barriers.txt: Clarify release/acquire ordering
notifier: Substitute rcu_access_pointer() for rcu_dereference_raw()
rcu: Provide grace-period piggybacking API
Paul Gortmaker (2):
rcu: Fix sparse warning for rcu_expedited from kernel/ksysfs.c
rcu: Ensure kernel/rcu/rcu.h can be sourced/used stand-alone
Shaibal Dutta (1):
rcu: Move SRCU grace period work to power efficient workqueue
Documentation/RCU/RTFP.txt | 149 ++-
Documentation/RCU/checklist.txt | 18 +-
Documentation/kernel-per-CPU-kthreads.txt | 13 +-
Documentation/memory-barriers.txt | 137 ++-
fs/file.c | 2 +-
include/linux/rculist.h | 17 +-
include/linux/rcupdate.h | 94 +-
include/linux/rcutiny.h | 20 +-
include/linux/rcutree.h | 8 +-
include/linux/srcu.h | 4 +-
include/linux/torture.h | 100 +++
kernel/Makefile | 1 +
kernel/ksysfs.c | 2 +
kernel/locking/Makefile | 1 +
kernel/locking/locktorture.c | 452 ++++++++++
kernel/notifier.c | 2 +-
kernel/rcu/Makefile | 2 +-
kernel/rcu/rcu.h | 7 +-
kernel/rcu/{torture.c => rcutorture.c} | 996 +++++----------------
kernel/rcu/srcu.c | 11 +-
kernel/rcu/tiny.c | 8 +-
kernel/rcu/tiny_plugin.h | 4 +-
kernel/rcu/tree.c | 80 +-
kernel/rcu/tree.h | 4 +-
kernel/rcu/tree_plugin.h | 19 +-
kernel/rcu/tree_trace.c | 6 +-
kernel/rcu/update.c | 5 +-
kernel/torture.c | 719 +++++++++++++++
lib/Kconfig.debug | 20 +
.../testing/selftests/rcutorture/bin/functions.sh | 1 +
.../selftests/rcutorture/bin/kvm-recheck-lock.sh | 51 ++
.../selftests/rcutorture/bin/kvm-recheck-rcu.sh | 51 ++
.../selftests/rcutorture/bin/kvm-recheck.sh | 13 +-
.../bin/{kvm-test-1-rcu.sh => kvm-test-1-run.sh} | 53 +-
tools/testing/selftests/rcutorture/bin/kvm.sh | 276 +++++-
.../selftests/rcutorture/configs/lock/BUSTED | 6 +
.../selftests/rcutorture/configs/lock/BUSTED.boot | 1 +
.../selftests/rcutorture/configs/lock/CFLIST | 1 +
.../selftests/rcutorture/configs/lock/CFcommon | 2 +
.../selftests/rcutorture/configs/lock/LOCK01 | 6 +
.../rcutorture/configs/lock/ver_functions.sh | 43 +
.../selftests/rcutorture/configs/rcu/BUSTED | 7 +
.../selftests/rcutorture/configs/rcu/BUSTED.boot | 1 +
.../selftests/rcutorture/configs/{ => rcu}/CFLIST | 0
.../selftests/rcutorture/configs/rcu/CFcommon | 2 +
.../selftests/rcutorture/configs/{ => rcu}/SRCU-N | 3 +-
.../rcutorture/configs/{ => rcu}/SRCU-N.boot | 0
.../selftests/rcutorture/configs/{ => rcu}/SRCU-P | 1 -
.../rcutorture/configs/{ => rcu}/SRCU-P.boot | 0
.../selftests/rcutorture/configs/{ => rcu}/TINY01 | 1 -
.../selftests/rcutorture/configs/{ => rcu}/TINY02 | 1 -
.../selftests/rcutorture/configs/{ => rcu}/TREE01 | 1 -
.../rcutorture/configs/{ => rcu}/TREE01.boot | 0
.../selftests/rcutorture/configs/{ => rcu}/TREE02 | 3 +-
.../selftests/rcutorture/configs/{ => rcu}/TREE03 | 1 -
.../selftests/rcutorture/configs/{ => rcu}/TREE04 | 1 -
.../rcutorture/configs/{ => rcu}/TREE04.boot | 0
.../selftests/rcutorture/configs/{ => rcu}/TREE05 | 1 -
.../rcutorture/configs/{ => rcu}/TREE05.boot | 0
.../selftests/rcutorture/configs/{ => rcu}/TREE06 | 1 -
.../selftests/rcutorture/configs/{ => rcu}/TREE07 | 1 -
.../selftests/rcutorture/configs/{ => rcu}/TREE08 | 1 -
.../rcutorture/configs/{ => rcu}/TREE08-T | 1 -
.../selftests/rcutorture/configs/{ => rcu}/TREE09 | 1 -
.../rcutorture/configs/{ => rcu}/v0.0/CFLIST | 0
.../configs/{ => rcu}/v0.0/N1-S-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v0.0/N2-2-t-nh-sd-SMP-hp | 0
.../configs/{ => rcu}/v0.0/N3-3-T-nh-SD-SMP-hp | 0
.../configs/{ => rcu}/v0.0/N4-A-t-NH-sd-SMP-HP | 0
.../configs/{ => rcu}/v0.0/N5-U-T-NH-sd-SMP-hp | 0
.../rcutorture/configs/{ => rcu}/v0.0/NT1-nh | 0
.../rcutorture/configs/{ => rcu}/v0.0/NT3-NH | 0
.../configs/{ => rcu}/v0.0/P1-S-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v0.0/P2-2-t-nh-sd-SMP-hp | 0
.../configs/{ => rcu}/v0.0/P3-3-T-nh-SD-SMP-hp | 0
.../configs/{ => rcu}/v0.0/P4-A-t-NH-sd-SMP-HP | 0
.../configs/{ => rcu}/v0.0/P5-U-T-NH-sd-SMP-hp | 0
.../rcutorture/configs/{ => rcu}/v0.0/PT1-nh | 0
.../rcutorture/configs/{ => rcu}/v0.0/PT2-NH | 0
.../configs/{ => rcu}/v0.0/ver_functions.sh | 22 +-
.../rcutorture/configs/{ => rcu}/v3.12/CFLIST | 0
.../configs/{ => rcu}/v3.12/N1-S-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v3.12/N2-2-t-nh-sd-SMP-hp | 0
.../configs/{ => rcu}/v3.12/N3-3-T-nh-SD-SMP-hp | 0
.../configs/{ => rcu}/v3.12/N4-A-t-NH-sd-SMP-HP | 0
.../configs/{ => rcu}/v3.12/N5-U-T-NH-sd-SMP-hp | 0
.../configs/{ => rcu}/v3.12/N6---t-nh-SD-smp-hp | 0
.../configs/{ => rcu}/v3.12/N7-4-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v3.12/N8-2-T-NH-SD-SMP-HP | 0
.../rcutorture/configs/{ => rcu}/v3.12/NT1-nh | 0
.../rcutorture/configs/{ => rcu}/v3.12/NT3-NH | 0
.../configs/{ => rcu}/v3.12/P1-S-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v3.12/P2-2-t-nh-sd-SMP-hp | 0
.../configs/{ => rcu}/v3.12/P3-3-T-nh-SD-SMP-hp | 0
.../configs/{ => rcu}/v3.12/P4-A-t-NH-sd-SMP-HP | 0
.../configs/{ => rcu}/v3.12/P5-U-T-NH-sd-SMP-hp | 0
.../configs/{ => rcu}/v3.12/P6---t-nh-SD-smp-hp | 0
.../configs/{ => rcu}/v3.12/P7-4-T-NH-SD-SMP-HP | 0
.../{ => rcu}/v3.12/P7-4-T-NH-SD-SMP-HP-all | 0
.../{ => rcu}/v3.12/P7-4-T-NH-SD-SMP-HP-none | 0
.../configs/{ => rcu}/v3.12/P7-4-T-NH-SD-SMP-hp | 0
.../rcutorture/configs/{ => rcu}/v3.12/PT1-nh | 0
.../rcutorture/configs/{ => rcu}/v3.12/PT2-NH | 0
.../rcutorture/configs/{ => rcu}/v3.3/CFLIST | 0
.../configs/{ => rcu}/v3.3/N1-S-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v3.3/N2-2-t-nh-sd-SMP-hp | 0
.../configs/{ => rcu}/v3.3/N3-3-T-nh-SD-SMP-hp | 0
.../configs/{ => rcu}/v3.3/N4-A-t-NH-sd-SMP-HP | 0
.../configs/{ => rcu}/v3.3/N5-U-T-NH-sd-SMP-hp | 0
.../rcutorture/configs/{ => rcu}/v3.3/NT1-nh | 0
.../rcutorture/configs/{ => rcu}/v3.3/NT3-NH | 0
.../configs/{ => rcu}/v3.3/P1-S-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v3.3/P2-2-t-nh-sd-SMP-hp | 0
.../configs/{ => rcu}/v3.3/P3-3-T-nh-SD-SMP-hp | 0
.../configs/{ => rcu}/v3.3/P4-A-t-NH-sd-SMP-HP | 0
.../configs/{ => rcu}/v3.3/P5-U-T-NH-sd-SMP-hp | 0
.../rcutorture/configs/{ => rcu}/v3.3/PT1-nh | 0
.../rcutorture/configs/{ => rcu}/v3.3/PT2-NH | 0
.../configs/{ => rcu/v3.3}/ver_functions.sh | 28 +-
.../rcutorture/configs/{ => rcu}/v3.5/CFLIST | 0
.../configs/{ => rcu}/v3.5/N1-S-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v3.5/N2-2-t-nh-sd-SMP-hp | 0
.../configs/{ => rcu}/v3.5/N3-3-T-nh-SD-SMP-hp | 0
.../configs/{ => rcu}/v3.5/N4-A-t-NH-sd-SMP-HP | 0
.../configs/{ => rcu}/v3.5/N5-U-T-NH-sd-SMP-hp | 0
.../rcutorture/configs/{ => rcu}/v3.5/NT1-nh | 0
.../rcutorture/configs/{ => rcu}/v3.5/NT3-NH | 0
.../configs/{ => rcu}/v3.5/P1-S-T-NH-SD-SMP-HP | 0
.../configs/{ => rcu}/v3.5/P2-2-t-nh-sd-SMP-hp | 0
.../configs/{ => rcu}/v3.5/P3-3-T-nh-SD-SMP-hp | 0
.../configs/{ => rcu}/v3.5/P4-A-t-NH-sd-SMP-HP | 0
.../configs/{ => rcu}/v3.5/P5-U-T-NH-sd-SMP-hp | 0
.../rcutorture/configs/{ => rcu}/v3.5/PT1-nh | 0
.../rcutorture/configs/{ => rcu}/v3.5/PT2-NH | 0
.../configs/{ => rcu}/v3.5/ver_functions.sh | 23 +-
.../configs/{v3.3 => rcu}/ver_functions.sh | 26 +-
.../{TREE_RCU-Kconfig.txt => TREE_RCU-kconfig.txt} | 0
137 files changed, 2454 insertions(+), 1078 deletions(-)
create mode 100644 include/linux/torture.h
create mode 100644 kernel/locking/locktorture.c
rename kernel/rcu/{torture.c => rcutorture.c} (59%)
create mode 100644 kernel/torture.c
create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-recheck-lock.sh
create mode 100755 tools/testing/selftests/rcutorture/bin/kvm-recheck-rcu.sh
rename tools/testing/selftests/rcutorture/bin/{kvm-test-1-rcu.sh => kvm-test-1-run.sh} (79%)
create mode 100644 tools/testing/selftests/rcutorture/configs/lock/BUSTED
create mode 100644 tools/testing/selftests/rcutorture/configs/lock/BUSTED.boot
create mode 100644 tools/testing/selftests/rcutorture/configs/lock/CFLIST
create mode 100644 tools/testing/selftests/rcutorture/configs/lock/CFcommon
create mode 100644 tools/testing/selftests/rcutorture/configs/lock/LOCK01
create mode 100644 tools/testing/selftests/rcutorture/configs/lock/ver_functions.sh
create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/BUSTED
create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/BUSTED.boot
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/CFLIST (100%)
create mode 100644 tools/testing/selftests/rcutorture/configs/rcu/CFcommon
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/SRCU-N (75%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/SRCU-N.boot (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/SRCU-P (86%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/SRCU-P.boot (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TINY01 (92%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TINY02 (92%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE01 (96%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE01.boot (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE02 (92%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE03 (96%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE04 (96%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE04.boot (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE05 (96%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE05.boot (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE06 (96%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE07 (96%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE08 (96%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE08-T (96%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/TREE09 (95%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/CFLIST (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/N1-S-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/N2-2-t-nh-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/N3-3-T-nh-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/N4-A-t-NH-sd-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/N5-U-T-NH-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/NT1-nh (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/NT3-NH (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/P1-S-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/P2-2-t-nh-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/P3-3-T-nh-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/P4-A-t-NH-sd-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/P5-U-T-NH-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/PT1-nh (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/PT2-NH (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v0.0/ver_functions.sh (70%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/CFLIST (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/N1-S-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/N2-2-t-nh-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/N3-3-T-nh-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/N4-A-t-NH-sd-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/N5-U-T-NH-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/N6---t-nh-SD-smp-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/N7-4-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/N8-2-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/NT1-nh (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/NT3-NH (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P1-S-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P2-2-t-nh-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P3-3-T-nh-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P4-A-t-NH-sd-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P5-U-T-NH-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P6---t-nh-SD-smp-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P7-4-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P7-4-T-NH-SD-SMP-HP-all (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P7-4-T-NH-SD-SMP-HP-none (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/P7-4-T-NH-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/PT1-nh (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.12/PT2-NH (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/CFLIST (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/N1-S-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/N2-2-t-nh-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/N3-3-T-nh-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/N4-A-t-NH-sd-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/N5-U-T-NH-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/NT1-nh (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/NT3-NH (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/P1-S-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/P2-2-t-nh-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/P3-3-T-nh-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/P4-A-t-NH-sd-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/P5-U-T-NH-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/PT1-nh (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.3/PT2-NH (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu/v3.3}/ver_functions.sh (72%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/CFLIST (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/N1-S-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/N2-2-t-nh-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/N3-3-T-nh-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/N4-A-t-NH-sd-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/N5-U-T-NH-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/NT1-nh (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/NT3-NH (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/P1-S-T-NH-SD-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/P2-2-t-nh-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/P3-3-T-nh-SD-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/P4-A-t-NH-sd-SMP-HP (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/P5-U-T-NH-sd-SMP-hp (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/PT1-nh (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/PT2-NH (100%)
rename tools/testing/selftests/rcutorture/configs/{ => rcu}/v3.5/ver_functions.sh (69%)
rename tools/testing/selftests/rcutorture/configs/{v3.3 => rcu}/ver_functions.sh (66%)
rename tools/testing/selftests/rcutorture/doc/{TREE_RCU-Kconfig.txt => TREE_RCU-kconfig.txt} (100%)Documentation/RCU/RTFP.txt +125 -24
@@ -31,6 +31,14 @@ has lapsed, so this approach may be used in non-GPL software, if desired. (In contrast, implementation of RCU is permitted only in software licensed under either GPL or LGPL. Sorry!!!) +In 1987, Rashid et al. described lazy TLB-flush [RichardRashid87a]. +At first glance, this has nothing to do with RCU, but nevertheless +this paper helped inspire the update-side batching used in the later +RCU implementation in DYNIX/ptx. In 1988, Barbara Liskov published +a description of Argus that noted that use of out-of-date values can +be tolerated in some situations. Thus, this paper provides some early +theoretical justification for use of stale data. + In 1990, Pugh [Pugh90] noted that explicitly tracking which threads were reading a given data structure permitted deferred free to operate in the presence of non-terminating threads. However, this explicit
@@ -41,11 +49,11 @@ providing a fine-grained locking design, however, it would be interesting to see how much of the performance advantage reported in 1990 remains today. -At about this same time, Adams [Adams91] described ``chaotic relaxation'', -where the normal barriers between successive iterations of convergent -numerical algorithms are relaxed, so that iteration $n$ might use -data from iteration $n-1$ or even $n-2$. This introduces error, -which typically slows convergence and thus increases the number of +At about this same time, Andrews [Andrews91textbook] described ``chaotic +relaxation'', where the normal barriers between successive iterations +of convergent numerical algorithms are relaxed, so that iteration $n$ +might use data from iteration $n-1$ or even $n-2$. This introduces +error, which typically slows convergence and thus increases the number of iterations required. However, this increase is sometimes more than made up for by a reduction in the number of expensive barrier operations, which are otherwise required to synchronize the threads at the end
@@ -55,7 +63,8 @@ is thus inapplicable to most data structures in operating-system kernels. In 1992, Henry (now Alexia) Massalin completed a dissertation advising parallel programmers to defer processing when feasible to simplify -synchronization. RCU makes extremely heavy use of this advice. +synchronization [HMassalinPhD]. RCU makes extremely heavy use of +this advice. In 1993, Jacobson [Jacobson93] verbally described what is perhaps the simplest deferred-free technique: simply waiting a fixed amount of time
@@ -90,27 +99,29 @@ mechanism, which is quite similar to RCU [Gamsa99]. These operating systems made pervasive use of RCU in place of "existence locks", which greatly simplifies locking hierarchies and helps avoid deadlocks. -2001 saw the first RCU presentation involving Linux [McKenney01a] -at OLS. The resulting abundance of RCU patches was presented the -following year [McKenney02a], and use of RCU in dcache was first -described that same year [Linder02a]. +The year 2000 saw an email exchange that would likely have +led to yet another independent invention of something like RCU +[RustyRussell2000a,RustyRussell2000b]. Instead, 2001 saw the first +RCU presentation involving Linux [McKenney01a] at OLS. The resulting +abundance of RCU patches was presented the following year [McKenney02a], +and use of RCU in dcache was first described that same year [Linder02a]. Also in 2002, Michael [Michael02b,Michael02a] presented "hazard-pointer" techniques that defer the destruction of data structures to simplify non-blocking synchronization (wait-free synchronization, lock-free synchronization, and obstruction-free synchronization are all examples of -non-blocking synchronization). In particular, this technique eliminates -locking, reduces contention, reduces memory latency for readers, and -parallelizes pipeline stalls and memory latency for writers. However, -these techniques still impose significant read-side overhead in the -form of memory barriers. Researchers at Sun worked along similar lines -in the same timeframe [HerlihyLM02]. These techniques can be thought -of as inside-out reference counts, where the count is represented by the -number of hazard pointers referencing a given data structure rather than -the more conventional counter field within the data structure itself. -The key advantage of inside-out reference counts is that they can be -stored in immortal variables, thus allowing races between access and -deletion to be avoided. +non-blocking synchronization). The corresponding journal article appeared +in 2004 [MagedMichael04a]. This technique eliminates locking, reduces +contention, reduces memory latency for readers, and parallelizes pipeline +stalls and memory latency for writers. However, these techniques still +impose significant read-side overhead in the form of memory barriers. +Researchers at Sun worked along similar lines in the same timeframe +[HerlihyLM02]. These techniques can be thought of as inside-out reference +counts, where the count is represented by the number of hazard pointers +referencing a given data structure rather than the more conventional +counter field within the data structure itself. The key advantage +of inside-out reference counts is that they can be stored in immortal +variables, thus allowing races between access and deletion to be avoided. By the same token, RCU can be thought of as a "bulk reference count", where some form of reference counter covers all reference by a given CPU
@@ -123,8 +134,10 @@ can be thought of in other terms as well. In 2003, the K42 group described how RCU could be used to create hot-pluggable implementations of operating-system functions [Appavoo03a]. -Later that year saw a paper describing an RCU implementation of System -V IPC [Arcangeli03], and an introduction to RCU in Linux Journal +Later that year saw a paper describing an RCU implementation +of System V IPC [Arcangeli03] (following up on a suggestion by +Hugh Dickins [Dickins02a] and an implementation by Mingming Cao +[MingmingCao2002IPCRCU]), and an introduction to RCU in Linux Journal [McKenney03a]. 2004 has seen a Linux-Journal article on use of RCU in dcache
@@ -383,6 +396,21 @@ for Programming Languages and Operating Systems}" } } +@phdthesis{HMassalinPhD +,author="H. Massalin" +,title="Synthesis: An Efficient Implementation of Fundamental Operating +System Services" +,school="Columbia University" +,address="New York, NY" +,year="1992" +,annotation={ + Mondo optimizing compiler. + Wait-free stuff. + Good advice: defer work to avoid synchronization. See page 90 + (PDF page 106), Section 5.4, fourth bullet point. +} +} + @unpublished{Jacobson93 ,author="Van Jacobson" ,title="Avoid Read-Side Locking Via Delayed Free"
@@ -671,6 +699,20 @@ Orran Krieger and Rusty Russell and Dipankar Sarma and Maneesh Soni" [Viewed October 18, 2004]" } +@conference{Michael02b +,author="Maged M. Michael" +,title="High Performance Dynamic Lock-Free Hash Tables and List-Based Sets" +,Year="2002" +,Month="August" +,booktitle="{Proceedings of the 14\textsuperscript{th} Annual ACM +Symposium on Parallel +Algorithms and Architecture}" +,pages="73-82" +,annotation={ +Like the title says... +} +} + @Conference{Linder02a ,Author="Hanna Linder and Dipankar Sarma and Maneesh Soni" ,Title="Scalability of the Directory Entry Cache"
@@ -727,6 +769,24 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" } } +@conference{Michael02a +,author="Maged M. Michael" +,title="Safe Memory Reclamation for Dynamic Lock-Free Objects Using Atomic +Reads and Writes" +,Year="2002" +,Month="August" +,booktitle="{Proceedings of the 21\textsuperscript{st} Annual ACM +Symposium on Principles of Distributed Computing}" +,pages="21-30" +,annotation={ + Each thread keeps an array of pointers to items that it is + currently referencing. Sort of an inside-out garbage collection + mechanism, but one that requires the accessing code to explicitly + state its needs. Also requires read-side memory barriers on + most architectures. +} +} + @unpublished{Dickins02a ,author="Hugh Dickins" ,title="Use RCU for System-V IPC"
@@ -735,6 +795,17 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" ,note="private communication" } +@InProceedings{HerlihyLM02 +,author={Maurice Herlihy and Victor Luchangco and Mark Moir} +,title="The Repeat Offender Problem: A Mechanism for Supporting Dynamic-Sized, +Lock-Free Data Structures" +,booktitle={Proceedings of 16\textsuperscript{th} International +Symposium on Distributed Computing} +,year=2002 +,month="October" +,pages="339-353" +} + @unpublished{Sarma02b ,Author="Dipankar Sarma" ,Title="Some dcache\_rcu benchmark numbers"
@@ -749,6 +820,19 @@ Andrea Arcangeli and Andi Kleen and Orran Krieger and Rusty Russell" } } +@unpublished{MingmingCao2002IPCRCU +,Author="Mingming Cao" +,Title="[PATCH]updated ipc lock patch" +,month="October" +,year="2002" +,note="Available: +\url{https://lkml.org/lkml/2002/10/24/262} +[Viewed February 15, 2014]" +,annotation={ + Mingming Cao's patch to introduce RCU to SysV IPC. +} +} + @unpublished{LinusTorvalds2003a ,Author="Linus Torvalds" ,Title="Re: {[PATCH]} small fixes in brlock.h"
@@ -982,6 +1066,23 @@ Realtime Applications" } } +@article{MagedMichael04a +,author="Maged M. Michael" +,title="Hazard Pointers: Safe Memory Reclamation for Lock-Free Objects" +,Year="2004" +,Month="June" +,journal="IEEE Transactions on Parallel and Distributed Systems" +,volume="15" +,number="6" +,pages="491-504" +,url="Available: +\url{http://www.research.ibm.com/people/m/michael/ieeetpds-2004.pdf} +[Viewed March 1, 2005]" +,annotation={ + New canonical hazard-pointer citation. +} +} + @phdthesis{PaulEdwardMcKenneyPhD ,author="Paul E. McKenney" ,title="Exploiting Deferred Destruction:
Documentation/RCU/checklist.txt +13 -5
@@ -256,10 +256,10 @@ over a rather long period of time, but improvements are always welcome! variations on this theme. b. Limiting update rate. For example, if updates occur only - once per hour, then no explicit rate limiting is required, - unless your system is already badly broken. The dcache - subsystem takes this approach -- updates are guarded - by a global lock, limiting their rate. + once per hour, then no explicit rate limiting is + required, unless your system is already badly broken. + Older versions of the dcache subsystem take this approach, + guarding updates with a global lock, limiting their rate. c. Trusted update -- if updates can only be done manually by superuser or some other trusted user, then it might not
@@ -268,7 +268,8 @@ over a rather long period of time, but improvements are always welcome! the machine. d. Use call_rcu_bh() rather than call_rcu(), in order to take - advantage of call_rcu_bh()'s faster grace periods. + advantage of call_rcu_bh()'s faster grace periods. (This + is only a partial solution, though.) e. Periodically invoke synchronize_rcu(), permitting a limited number of updates per grace period.
@@ -276,6 +277,13 @@ over a rather long period of time, but improvements are always welcome! The same cautions apply to call_rcu_bh(), call_rcu_sched(), call_srcu(), and kfree_rcu(). + Note that although these primitives do take action to avoid memory + exhaustion when any given CPU has too many callbacks, a determined + user could still exhaust memory. This is especially the case + if a system with a large number of CPUs has been configured to + offload all of its RCU callbacks onto a single CPU, or if the + system has relatively little free memory. + 9. All RCU list-traversal primitives, which include rcu_dereference(), list_for_each_entry_rcu(), and list_for_each_safe_rcu(), must be either within an RCU read-side
Documentation/kernel-per-CPU-kthreads.txt +12 -1
@@ -162,7 +162,18 @@ Purpose: Execute workqueue requests To reduce its OS jitter, do any of the following: 1. Run your workload at a real-time priority, which will allow preempting the kworker daemons. -2. Do any of the following needed to avoid jitter that your +2. A given workqueue can be made visible in the sysfs filesystem + by passing the WQ_SYSFS to that workqueue's alloc_workqueue(). + Such a workqueue can be confined to a given subset of the + CPUs using the /sys/devices/virtual/workqueue/*/cpumask sysfs + files. The set of WQ_SYSFS workqueues can be displayed using + "ls sys/devices/virtual/workqueue". That said, the workqueues + maintainer would like to caution people against indiscriminately + sprinkling WQ_SYSFS across all the workqueues. The reason for + caution is that it is easy to add WQ_SYSFS, but because sysfs is + part of the formal user/kernel API, it can be nearly impossible + to remove it, even if its addition was a mistake. +3. Do any of the following needed to avoid jitter that your application cannot tolerate: a. Build your kernel with CONFIG_SLUB=y rather than CONFIG_SLAB=y, thus avoiding the slab allocator's periodic
Documentation/memory-barriers.txt +99 -38
220 lines not on this page · raw message
fs/file.c +1 -1
@@ -497,7 +497,7 @@ repeat: error = fd;#if 1 /* Sanity check */ -if (rcu_dereference_raw (fdt->fd[fd]) !=NULL ) { +if (rcu_access_pointer (fdt->fd[fd]) !=NULL ) {printk (KERN_WARNING "alloc_fd: slot %d not NULL!\n" , fd);rcu_assign_pointer (fdt->fd[fd],NULL ); }
include/linux/rculist.h +9 -8
@@ -247,9 +247,10 @@ static inline void list_splice_init_rcu(struct list_head *list,* primitives such as list_add_rcu() as long as it's guarded by rcu_read_lock(). */ #define list_entry_rcu (ptr, type, member) \ - ({typeof (*ptr) __rcu *__ptr = (typeof (*ptr) __rcu __force *)ptr; \ - container_of((typeof(ptr))rcu_dereference_raw(__ptr), type, member); \ - }) +({ \ + typeof(*ptr) __rcu *__ptr = (typeof(*ptr) __rcu __force *)ptr; \ + container_of((typeof(ptr))rcu_dereference_raw(__ptr), type, member); \ +})/** * Where are list_empty_rcu() and list_first_entry_rcu()?
@@ -285,11 +286,11 @@ static inline void list_splice_init_rcu(struct list_head *list,* primitives such as list_add_rcu() as long as it's guarded by rcu_read_lock(). */ #define list_first_or_null_rcu (ptr, type, member) \ - ({struct list_head *__ptr = (ptr); \ - struct list_head *__next = ACCESS_ONCE(__ptr->next); \ - likely(__ptr != __next) ? \ - list_entry_rcu(__next, type, member) : NULL; \ - }) +({ \ + struct list_head *__ptr = (ptr); \ + struct list_head *__next = ACCESS_ONCE(__ptr->next); \ + likely(__ptr != __next) ? list_entry_rcu(__next, type, member) : NULL; \ +})/** * list_for_each_entry_rcu - iterate over rcu list of given type
include/linux/rcupdate.h +48 -46
140 lines not on this page · raw message
include/linux/rcutiny.h +12 -8
@@ -12,8 +12,8 @@* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* along with this program; if not, you can access it online at +* http://www.gnu.org/licenses/gpl-2.0.html. * * Copyright IBM Corporation, 2008 *
@@ -27,6 +27,16 @@#include <linux/cache.h> +static inline unsigned long get_state_synchronize_rcu (void ) +{ +return 0 ; +} + +static inline void cond_synchronize_rcu (unsigned long oldstate) +{ +might_sleep (); +} +static inline void rcu_barrier_bh (void ) {wait_rcu_gp (call_rcu_bh);
@@ -68,12 +78,6 @@ static inline void kfree_call_rcu(struct rcu_head *head,call_rcu (head, func); } -static inline int rcu_needs_cpu (int cpu,unsigned long *delta_jiffies) -{ - *delta_jiffies =ULONG_MAX ; -return 0 ; -} -static inline void rcu_note_context_switch (int cpu) {rcu_sched_qs (cpu);
include/linux/rcutree.h +6 -2
@@ -12,8 +12,8 @@* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* along with this program; if not, you can access it online at +* http://www.gnu.org/licenses/gpl-2.0.html. * * Copyright IBM Corporation, 2008 *
@@ -31,7 +31,9 @@#define __LINUX_RCUTREE_Hvoid rcu_note_context_switch (int cpu); +#ifndef CONFIG_RCU_NOCB_CPU_ALL int rcu_needs_cpu (int cpu,unsigned long *delta_jiffies); +#endif /* #ifndef CONFIG_RCU_NOCB_CPU_ALL */ void rcu_cpu_stall_reset (void );/*
@@ -74,6 +76,8 @@ static inline void synchronize_rcu_bh_expedited(void)void rcu_barrier (void );void rcu_barrier_bh (void );void rcu_barrier_sched (void ); +unsigned long get_state_synchronize_rcu (void ); +void cond_synchronize_rcu (unsigned long oldstate);extern unsigned long rcutorture_testseq;extern unsigned long rcutorture_vernum;
include/linux/srcu.h +2 -2
@@ -12,8 +12,8 @@* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* along with this program; if not, you can access it online at +* http://www.gnu.org/licenses/gpl-2.0.html. * * Copyright (C) IBM Corporation, 2006 * Copyright (C) Fujitsu, 2012
include/linux/torture.h new file +100 -0
100 lines not on this page · raw message
kernel/Makefile +1 -0
@@ -93,6 +93,7 @@ obj-$(CONFIG_PADATA) += padata.o obj-$(CONFIG_CRASH_DUMP) += crash_dump.o obj-$(CONFIG_JUMP_LABEL) += jump_label.o obj-$(CONFIG_CONTEXT_TRACKING) += context_tracking.o +obj-$(CONFIG_TORTURE_TEST) += torture.o $(obj)/configs.o: $(obj)/config_data.h
kernel/ksysfs.c +2 -0
@@ -19,6 +19,8 @@#include <linux/sched.h> #include <linux/capability.h> +#include <linux/rcupdate.h> /* rcu_expedited */ +#define KERNEL_ATTR_RO (_name) \ static struct kobj_attribute _name##_attr = __ATTR_RO(_name)
kernel/locking/Makefile +1 -0
@@ -23,3 +23,4 @@ obj-$(CONFIG_DEBUG_SPINLOCK) += spinlock_debug.o obj-$(CONFIG_RWSEM_GENERIC_SPINLOCK) += rwsem-spinlock.o obj-$(CONFIG_RWSEM_XCHGADD_ALGORITHM) += rwsem-xadd.o obj-$(CONFIG_PERCPU_RWSEM) += percpu-rwsem.o +obj-$(CONFIG_LOCK_TORTURE_TEST) += locktorture.o
kernel/locking/locktorture.c new file +452 -0
452 lines not on this page · raw message
kernel/notifier.c +1 -1
@@ -309,7 +309,7 @@ int __blocking_notifier_call_chain(struct blocking_notifier_head *nh,* racy then it does not matter what the result of the test * is, we re-check the list after having taken the lock anyway: */ -if (rcu_dereference_raw (nh->head)) { +if (rcu_access_pointer (nh->head)) {down_read (&nh->rwsem); ret =notifier_call_chain (&nh->head, val, v, nr_to_call, nr_calls);
kernel/rcu/Makefile +1 -1
@@ -1,5 +1,5 @@ obj-y += update.o srcu.o -obj-$(CONFIG_RCU_TORTURE_TEST) += torture.o +obj-$(CONFIG_RCU_TORTURE_TEST) += rcutorture.o obj-$(CONFIG_TREE_RCU) += tree.o obj-$(CONFIG_TREE_PREEMPT_RCU) += tree.o obj-$(CONFIG_TREE_RCU_TRACE) += tree_trace.o
kernel/rcu/rcu.h +3 -4
@@ -12,8 +12,8 @@* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* along with this program; if not, you can access it online at +* http://www.gnu.org/licenses/gpl-2.0.html. * * Copyright IBM Corporation, 2011 *
@@ -23,6 +23,7 @@#ifndef __LINUX_RCU_H#define __LINUX_RCU_H +#include <trace/events/rcu.h> #ifdef CONFIG_RCU_TRACE #define RCU_TRACE (stmt) stmt#else /* #ifdef CONFIG_RCU_TRACE */
@@ -116,8 +117,6 @@ static inline bool __rcu_reclaim(const char *rn, struct rcu_head *head) } } -extern int rcu_expedited; -#ifdef CONFIG_RCU_STALL_COMMON extern int rcu_cpu_stall_suppress;
kernel/rcu/rcutorture.c renamed from kernel/rcu/torture.c +215 -781
1,464 lines not on this page · raw message
kernel/rcu/srcu.c +5 -6
@@ -12,8 +12,8 @@* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* along with this program; if not, you can access it online at +* http://www.gnu.org/licenses/gpl-2.0.html. * * Copyright (C) IBM Corporation, 2006 * Copyright (C) Fujitsu, 2012
@@ -36,8 +36,6 @@#include <linux/delay.h> #include <linux/srcu.h> -#include <trace/events/rcu.h> -#include "rcu.h" /*
@@ -398,7 +396,7 @@ void call_srcu(struct srcu_struct *sp, struct rcu_head *head,rcu_batch_queue (&sp->batch_queue, head);if (!sp->running) { sp->running = true; -schedule_delayed_work (&sp->work,0 ); +queue_delayed_work (system_power_efficient_wq, &sp->work,0 ); }spin_unlock_irqrestore (&sp->queue_lock, flags); }
@@ -674,7 +672,8 @@ static void srcu_reschedule(struct srcu_struct *sp) }if (pending) -schedule_delayed_work (&sp->work,SRCU_INTERVAL ); +queue_delayed_work (system_power_efficient_wq, + &sp->work,SRCU_INTERVAL ); }/*
kernel/rcu/tiny.c +2 -6
@@ -12,8 +12,8 @@* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* along with this program; if not, you can access it online at +* http://www.gnu.org/licenses/gpl-2.0.html. * * Copyright IBM Corporation, 2008 *
@@ -37,10 +37,6 @@#include <linux/prefetch.h> #include <linux/ftrace_event.h> -#ifdef CONFIG_RCU_TRACE -#include <trace/events/rcu.h> -#endif /* #else #ifdef CONFIG_RCU_TRACE */ -#include "rcu.h" /* Forward declarations for tiny_plugin.h. */
kernel/rcu/tiny_plugin.h +2 -2
@@ -14,8 +14,8 @@* GNU General Public License for more details. * * You should have received a copy of the GNU General Public License -* along with this program; if not, write to the Free Software -* Foundation, Inc., 59 Temple Place - Suite 330, Boston, MA 02111-1307, USA. +* along with this program; if not, you can access it online at +* http://www.gnu.org/licenses/gpl-2.0.html. * * Copyright (c) 2010 Linaro *
kernel/rcu/tree.c +66 -14
114 lines not on this page · raw message
kernel/torture.c new file +719 -0
719 lines not on this page · raw message
tools/testing/selftests/rcutorture/bin/functions.sh +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/bin/kvm-recheck-lock.sh new file +51 -0
51 lines not on this page · raw message
tools/testing/selftests/rcutorture/bin/kvm-recheck-rcu.sh new file +51 -0
51 lines not on this page · raw message
tools/testing/selftests/rcutorture/bin/kvm-recheck.sh +10 -3
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/bin/kvm-test-1-run.sh renamed from tools/testing/selftests/rcutorture/bin/kvm-test-1-rcu.sh +32 -21
53 lines not on this page · raw message
tools/testing/selftests/rcutorture/bin/kvm.sh +239 -37
276 lines not on this page · raw message
tools/testing/selftests/rcutorture/configs/lock/BUSTED new file +6 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/lock/BUSTED.boot new file +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/lock/CFLIST new file +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/lock/CFcommon new file +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/lock/LOCK01 new file +6 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/lock/ver_functions.sh new file +43 -0
43 lines not on this page · raw message
tools/testing/selftests/rcutorture/configs/rcu/BUSTED new file +7 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/BUSTED.boot new file +1 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/CFLIST renamed from tools/testing/selftests/rcutorture/configs/CFLIST +0 -0
tools/testing/selftests/rcutorture/configs/rcu/CFcommon new file +2 -0
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/SRCU-N renamed from tools/testing/selftests/rcutorture/configs/SRCU-N +1 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/SRCU-N.boot renamed from tools/testing/selftests/rcutorture/configs/SRCU-N.boot +0 -0
tools/testing/selftests/rcutorture/configs/rcu/SRCU-P renamed from tools/testing/selftests/rcutorture/configs/SRCU-P +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/SRCU-P.boot renamed from tools/testing/selftests/rcutorture/configs/SRCU-P.boot +0 -0
tools/testing/selftests/rcutorture/configs/rcu/TINY01 renamed from tools/testing/selftests/rcutorture/configs/TINY01 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TINY02 renamed from tools/testing/selftests/rcutorture/configs/TINY02 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE01 renamed from tools/testing/selftests/rcutorture/configs/TREE01 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE01.boot renamed from tools/testing/selftests/rcutorture/configs/TREE01.boot +0 -0
tools/testing/selftests/rcutorture/configs/rcu/TREE02 renamed from tools/testing/selftests/rcutorture/configs/TREE02 +1 -2
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE03 renamed from tools/testing/selftests/rcutorture/configs/TREE03 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE04 renamed from tools/testing/selftests/rcutorture/configs/TREE04 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE04.boot renamed from tools/testing/selftests/rcutorture/configs/TREE04.boot +0 -0
tools/testing/selftests/rcutorture/configs/rcu/TREE05 renamed from tools/testing/selftests/rcutorture/configs/TREE05 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE05.boot renamed from tools/testing/selftests/rcutorture/configs/TREE05.boot +0 -0
tools/testing/selftests/rcutorture/configs/rcu/TREE06 renamed from tools/testing/selftests/rcutorture/configs/TREE06 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE07 renamed from tools/testing/selftests/rcutorture/configs/TREE07 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE08 renamed from tools/testing/selftests/rcutorture/configs/TREE08 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE08-T renamed from tools/testing/selftests/rcutorture/configs/TREE08-T +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/TREE09 renamed from tools/testing/selftests/rcutorture/configs/TREE09 +0 -1
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/v0.0/CFLIST renamed from tools/testing/selftests/rcutorture/configs/v0.0/CFLIST +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/N1-S-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v0.0/N1-S-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/N2-2-t-nh-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v0.0/N2-2-t-nh-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/N3-3-T-nh-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v0.0/N3-3-T-nh-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/N4-A-t-NH-sd-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v0.0/N4-A-t-NH-sd-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/N5-U-T-NH-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v0.0/N5-U-T-NH-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/NT1-nh renamed from tools/testing/selftests/rcutorture/configs/v0.0/NT1-nh +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/NT3-NH renamed from tools/testing/selftests/rcutorture/configs/v0.0/NT3-NH +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/P1-S-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v0.0/P1-S-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/P2-2-t-nh-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v0.0/P2-2-t-nh-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/P3-3-T-nh-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v0.0/P3-3-T-nh-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/P4-A-t-NH-sd-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v0.0/P4-A-t-NH-sd-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/P5-U-T-NH-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v0.0/P5-U-T-NH-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/PT1-nh renamed from tools/testing/selftests/rcutorture/configs/v0.0/PT1-nh +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/PT2-NH renamed from tools/testing/selftests/rcutorture/configs/v0.0/PT2-NH +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v0.0/ver_functions.sh renamed from tools/testing/selftests/rcutorture/configs/v0.0/ver_functions.sh +10 -12
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/v3.12/CFLIST renamed from tools/testing/selftests/rcutorture/configs/v3.12/CFLIST +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/N1-S-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.12/N1-S-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/N2-2-t-nh-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/N2-2-t-nh-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/N3-3-T-nh-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/N3-3-T-nh-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/N4-A-t-NH-sd-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.12/N4-A-t-NH-sd-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/N5-U-T-NH-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/N5-U-T-NH-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/N6---t-nh-SD-smp-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/N6---t-nh-SD-smp-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/N7-4-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.12/N7-4-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/N8-2-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.12/N8-2-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/NT1-nh renamed from tools/testing/selftests/rcutorture/configs/v3.12/NT1-nh +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/NT3-NH renamed from tools/testing/selftests/rcutorture/configs/v3.12/NT3-NH +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P1-S-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.12/P1-S-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P2-2-t-nh-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/P2-2-t-nh-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P3-3-T-nh-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/P3-3-T-nh-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P4-A-t-NH-sd-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.12/P4-A-t-NH-sd-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P5-U-T-NH-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/P5-U-T-NH-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P6---t-nh-SD-smp-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/P6---t-nh-SD-smp-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.12/P7-4-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP-all renamed from tools/testing/selftests/rcutorture/configs/v3.12/P7-4-T-NH-SD-SMP-HP-all +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-HP-none renamed from tools/testing/selftests/rcutorture/configs/v3.12/P7-4-T-NH-SD-SMP-HP-none +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/P7-4-T-NH-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.12/P7-4-T-NH-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/PT1-nh renamed from tools/testing/selftests/rcutorture/configs/v3.12/PT1-nh +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.12/PT2-NH renamed from tools/testing/selftests/rcutorture/configs/v3.12/PT2-NH +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/CFLIST renamed from tools/testing/selftests/rcutorture/configs/v3.3/CFLIST +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/N1-S-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.3/N1-S-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/N2-2-t-nh-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.3/N2-2-t-nh-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/N3-3-T-nh-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.3/N3-3-T-nh-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/N4-A-t-NH-sd-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.3/N4-A-t-NH-sd-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/N5-U-T-NH-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.3/N5-U-T-NH-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/NT1-nh renamed from tools/testing/selftests/rcutorture/configs/v3.3/NT1-nh +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/NT3-NH renamed from tools/testing/selftests/rcutorture/configs/v3.3/NT3-NH +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/P1-S-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.3/P1-S-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/P2-2-t-nh-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.3/P2-2-t-nh-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/P3-3-T-nh-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.3/P3-3-T-nh-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/P4-A-t-NH-sd-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.3/P4-A-t-NH-sd-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/P5-U-T-NH-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.3/P5-U-T-NH-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/PT1-nh renamed from tools/testing/selftests/rcutorture/configs/v3.3/PT1-nh +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/PT2-NH renamed from tools/testing/selftests/rcutorture/configs/v3.3/PT2-NH +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.3/ver_functions.sh renamed from tools/testing/selftests/rcutorture/configs/ver_functions.sh +13 -15
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/v3.5/CFLIST renamed from tools/testing/selftests/rcutorture/configs/v3.5/CFLIST +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/N1-S-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.5/N1-S-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/N2-2-t-nh-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.5/N2-2-t-nh-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/N3-3-T-nh-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.5/N3-3-T-nh-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/N4-A-t-NH-sd-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.5/N4-A-t-NH-sd-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/N5-U-T-NH-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.5/N5-U-T-NH-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/NT1-nh renamed from tools/testing/selftests/rcutorture/configs/v3.5/NT1-nh +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/NT3-NH renamed from tools/testing/selftests/rcutorture/configs/v3.5/NT3-NH +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/P1-S-T-NH-SD-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.5/P1-S-T-NH-SD-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/P2-2-t-nh-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.5/P2-2-t-nh-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/P3-3-T-nh-SD-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.5/P3-3-T-nh-SD-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/P4-A-t-NH-sd-SMP-HP renamed from tools/testing/selftests/rcutorture/configs/v3.5/P4-A-t-NH-sd-SMP-HP +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/P5-U-T-NH-sd-SMP-hp renamed from tools/testing/selftests/rcutorture/configs/v3.5/P5-U-T-NH-sd-SMP-hp +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/PT1-nh renamed from tools/testing/selftests/rcutorture/configs/v3.5/PT1-nh +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/PT2-NH renamed from tools/testing/selftests/rcutorture/configs/v3.5/PT2-NH +0 -0
tools/testing/selftests/rcutorture/configs/rcu/v3.5/ver_functions.sh renamed from tools/testing/selftests/rcutorture/configs/v3.5/ver_functions.sh +17 -6
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/configs/rcu/ver_functions.sh renamed from tools/testing/selftests/rcutorture/configs/v3.3/ver_functions.sh +21 -5
Lines of this file are not shown. View the raw message.
tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt renamed from tools/testing/selftests/rcutorture/doc/TREE_RCU-Kconfig.txt +0 -0
The rest of this diff is not shown. View the raw message.
Part of the diff is not shown here. View the raw message.
Quoted 3 lines
Paul E. McKenney (70):
[...]
locktorture: Add a lock-torture kernel module
This commit added a check for CONFIG_LOCK_TORTURE_TEST_RUNNABLE. But I can't find a Kconfig symbol LOCK_TORTURE_TEST_RUNNABLE nor a preprocessor define for CONFIG_LOCK_TORTURE_TEST_RUNNABLE. (I only checked master of Linus's tree and linux-next.)
Is this check for CONFIG_LOCK_TORTURE_TEST_RUNNABLE needed?
Paul Bolle
Quoted 10 lines · Paul Bolle
Quoted 3 lines
Paul E. McKenney (70):
[...]
locktorture: Add a lock-torture kernel moduleThis commit added a check for
CONFIG_LOCK_TORTURE_TEST_RUNNABLE. But I can't find aKconfigsymbolLOCK_TORTURE_TEST_RUNNABLEnor a preprocessor define forCONFIG_LOCK_TORTURE_TEST_RUNNABLE. (I only checked master of Linus's tree and linux-next.)Is this check for
CONFIG_LOCK_TORTURE_TEST_RUNNABLEneeded?
My bad. My current tests use the boot parameter rather than relying on the Kconfig parameter, so I missed this bug. I will of course fix it. I don't believe that this is particularly urgent, so unless someone tells me otherwise, I will queue the fix for 3.16.
Thanx, Paul
Quoted 2 lines · Paul E. McKenney
I don't believe that this is particularly urgent, so unless someone tells me otherwise, I will queue the fix for 3.16.
Few people share my OCD for Kconfig symbols. So most people will not think this is urgent. On the other hand, why wait three to four months when this can be cleaned up in a few weeks?
Thanks,
Paul Bolle
Quoted 7 lines · Paul Bolle
Quoted 2 lines · Paul E. McKenney
I don't believe that this is particularly urgent, so unless someone tells me otherwise, I will queue the fix for 3.16.
Few people share my OCD for
Kconfigsymbols. So most people will not think this is urgent. On the other hand, why wait three to four months when this can be cleaned up in a few weeks?
Because I need to decide whether the right fix is to add the LOCK_TORTURE_RUNNABLE or to remove the RCU_TORTURE_RUNNABLE. ;-)
My kneejerk reaction was the former, but I am leaning towards the latter. Shrinks the code a bit, gets rid of a Kconfig parameter and only requires changes in scripts for a few people using rcutorture...
Thanx, Paul