]> asedeno.scripts.mit.edu Git - linux.git/commitdiff
rcu: Remove *_SLOW_* Kconfig options
authorPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Wed, 10 May 2017 21:36:55 +0000 (14:36 -0700)
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>
Fri, 9 Jun 2017 01:52:38 +0000 (18:52 -0700)
The RCU_TORTURE_TEST_SLOW_PREINIT, RCU_TORTURE_TEST_SLOW_PREINIT_DELAY,
RCU_TORTURE_TEST_SLOW_PREINIT_DELAY, RCU_TORTURE_TEST_SLOW_INIT,
RCU_TORTURE_TEST_SLOW_INIT_DELAY, RCU_TORTURE_TEST_SLOW_CLEANUP,
and RCU_TORTURE_TEST_SLOW_CLEANUP_DELAY Kconfig options are only
useful for torture testing, and there are the rcutree.gp_cleanup_delay,
rcutree.gp_init_delay, and rcutree.gp_preinit_delay kernel boot parameters
that rcutorture can use instead.  The effect of these parameters is to
artificially slow down grace period initialization and cleanup in order
to make some types of race conditions happen more often.

This commit therefore simplifies Tree RCU a bit by removing the Kconfig
options and adding the corresponding kernel parameters to rcutorture's
.boot files instead.  However, this commit also leaves out the kernel
parameters for TREE02, TREE04, and TREE07 in order to have about the
same number of tests slowed as not slowed.  TREE01, TREE03, TREE05,
and TREE06 are slowed, and the rest are not slowed.

Reported-by: Linus Torvalds <torvalds@linux-foundation.org>
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
16 files changed:
Documentation/admin-guide/kernel-parameters.txt
kernel/rcu/tree.c
kernel/rcu/tree_plugin.h
lib/Kconfig.debug
tools/testing/selftests/rcutorture/configs/rcu/TREE01
tools/testing/selftests/rcutorture/configs/rcu/TREE01.boot
tools/testing/selftests/rcutorture/configs/rcu/TREE02
tools/testing/selftests/rcutorture/configs/rcu/TREE03
tools/testing/selftests/rcutorture/configs/rcu/TREE03.boot
tools/testing/selftests/rcutorture/configs/rcu/TREE04
tools/testing/selftests/rcutorture/configs/rcu/TREE05
tools/testing/selftests/rcutorture/configs/rcu/TREE05.boot
tools/testing/selftests/rcutorture/configs/rcu/TREE06
tools/testing/selftests/rcutorture/configs/rcu/TREE06.boot
tools/testing/selftests/rcutorture/configs/rcu/TREE07
tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt

index 6671f9b60a86a50d8853b337ec942517b2a9c0a2..f85bfe02f052a2f893daa33cb3b8d3cb16d6f4df 100644 (file)
 
        rcutree.gp_cleanup_delay=       [KNL]
                        Set the number of jiffies to delay each step of
-                       RCU grace-period cleanup.  This only has effect
-                       when CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP is set.
+                       RCU grace-period cleanup.
 
        rcutree.gp_init_delay=  [KNL]
                        Set the number of jiffies to delay each step of
-                       RCU grace-period initialization.  This only has
-                       effect when CONFIG_RCU_TORTURE_TEST_SLOW_INIT
-                       is set.
+                       RCU grace-period initialization.
 
        rcutree.gp_preinit_delay=       [KNL]
                        Set the number of jiffies to delay each step of
                        RCU grace-period pre-initialization, that is,
                        the propagation of recent CPU-hotplug changes up
-                       the rcu_node combining tree.  This only has effect
-                       when CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT is set.
+                       the rcu_node combining tree.
 
        rcutree.rcu_fanout_exact= [KNL]
                        Disable autobalancing of the rcu_node combining
index cac24f5d3fd210fbb70d7ff68f8a458e55b4d603..bbbddd85906b5b6111ed38c32fd272e804ba4534 100644 (file)
@@ -177,26 +177,12 @@ module_param(kthread_prio, int, 0644);
 
 /* Delay in jiffies for grace-period initialization delays, debug only. */
 
-#ifdef CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT
-static int gp_preinit_delay = CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT_DELAY;
-module_param(gp_preinit_delay, int, 0644);
-#else /* #ifdef CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT */
-static const int gp_preinit_delay;
-#endif /* #else #ifdef CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT */
-
-#ifdef CONFIG_RCU_TORTURE_TEST_SLOW_INIT
-static int gp_init_delay = CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY;
-module_param(gp_init_delay, int, 0644);
-#else /* #ifdef CONFIG_RCU_TORTURE_TEST_SLOW_INIT */
-static const int gp_init_delay;
-#endif /* #else #ifdef CONFIG_RCU_TORTURE_TEST_SLOW_INIT */
-
-#ifdef CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP
-static int gp_cleanup_delay = CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP_DELAY;
-module_param(gp_cleanup_delay, int, 0644);
-#else /* #ifdef CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP */
-static const int gp_cleanup_delay;
-#endif /* #else #ifdef CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP */
+static int gp_preinit_delay;
+module_param(gp_preinit_delay, int, 0444);
+static int gp_init_delay;
+module_param(gp_init_delay, int, 0444);
+static int gp_cleanup_delay;
+module_param(gp_cleanup_delay, int, 0444);
 
 /*
  * Number of grace periods between delays, normalized by the duration of
index 116cf83398262bab5c97d8c87d3ddde3c5e30402..0553d9fed7d71b6f33b8e68f489c14685a91f96a 100644 (file)
@@ -109,11 +109,11 @@ static void __init rcu_bootup_announce_oddness(void)
                pr_info("\tKick kthreads if too-long grace period.\n");
        if (IS_ENABLED(CONFIG_DEBUG_OBJECTS_RCU_HEAD))
                pr_info("\tRCU callback double-/use-after-free debug enabled.\n");
-       if (IS_ENABLED(CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT))
+       if (gp_preinit_delay)
                pr_info("\tRCU debug GP pre-init slowdown %d jiffies.\n", gp_preinit_delay);
-       if (IS_ENABLED(CONFIG_RCU_TORTURE_TEST_SLOW_INIT))
+       if (gp_init_delay)
                pr_info("\tRCU debug GP init slowdown %d jiffies.\n", gp_init_delay);
-       if (IS_ENABLED(CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP))
+       if (gp_cleanup_delay)
                pr_info("\tRCU debug GP init slowdown %d jiffies.\n", gp_cleanup_delay);
        if (IS_ENABLED(CONFIG_RCU_EQS_DEBUG))
                pr_info("\tRCU debug extended QS entry/exit.\n");
index e4587ebe52c7ec3c7923c661dea9b8f15b77bd8e..960c5d2d3c0331d81a77d238389ff4e5602d854b 100644 (file)
@@ -1373,81 +1373,6 @@ config RCU_TORTURE_TEST
          Say M if you want the RCU torture tests to build as a module.
          Say N if you are unsure.
 
-config RCU_TORTURE_TEST_SLOW_PREINIT
-       bool "Slow down RCU grace-period pre-initialization to expose races"
-       depends on RCU_TORTURE_TEST
-       help
-         This option delays grace-period pre-initialization (the
-         propagation of CPU-hotplug changes up the rcu_node combining
-         tree) for a few jiffies between initializing each pair of
-         consecutive rcu_node structures.  This helps to expose races
-         involving grace-period pre-initialization, in other words, it
-         makes your kernel less stable.  It can also greatly increase
-         grace-period latency, especially on systems with large numbers
-         of CPUs.  This is useful when torture-testing RCU, but in
-         almost no other circumstance.
-
-         Say Y here if you want your system to crash and hang more often.
-         Say N if you want a sane system.
-
-config RCU_TORTURE_TEST_SLOW_PREINIT_DELAY
-       int "How much to slow down RCU grace-period pre-initialization"
-       range 0 5
-       default 3
-       depends on RCU_TORTURE_TEST_SLOW_PREINIT
-       help
-         This option specifies the number of jiffies to wait between
-         each rcu_node structure pre-initialization step.
-
-config RCU_TORTURE_TEST_SLOW_INIT
-       bool "Slow down RCU grace-period initialization to expose races"
-       depends on RCU_TORTURE_TEST
-       help
-         This option delays grace-period initialization for a few
-         jiffies between initializing each pair of consecutive
-         rcu_node structures.  This helps to expose races involving
-         grace-period initialization, in other words, it makes your
-         kernel less stable.  It can also greatly increase grace-period
-         latency, especially on systems with large numbers of CPUs.
-         This is useful when torture-testing RCU, but in almost no
-         other circumstance.
-
-         Say Y here if you want your system to crash and hang more often.
-         Say N if you want a sane system.
-
-config RCU_TORTURE_TEST_SLOW_INIT_DELAY
-       int "How much to slow down RCU grace-period initialization"
-       range 0 5
-       default 3
-       depends on RCU_TORTURE_TEST_SLOW_INIT
-       help
-         This option specifies the number of jiffies to wait between
-         each rcu_node structure initialization.
-
-config RCU_TORTURE_TEST_SLOW_CLEANUP
-       bool "Slow down RCU grace-period cleanup to expose races"
-       depends on RCU_TORTURE_TEST
-       help
-         This option delays grace-period cleanup for a few jiffies
-         between cleaning up each pair of consecutive rcu_node
-         structures.  This helps to expose races involving grace-period
-         cleanup, in other words, it makes your kernel less stable.
-         It can also greatly increase grace-period latency, especially
-         on systems with large numbers of CPUs.  This is useful when
-         torture-testing RCU, but in almost no other circumstance.
-
-         Say Y here if you want your system to crash and hang more often.
-         Say N if you want a sane system.
-
-config RCU_TORTURE_TEST_SLOW_CLEANUP_DELAY
-       int "How much to slow down RCU grace-period cleanup"
-       range 0 5
-       default 3
-       depends on RCU_TORTURE_TEST_SLOW_CLEANUP
-       help
-         This option specifies the number of jiffies to wait between
-         each rcu_node structure cleanup operation.
-
 config RCU_CPU_STALL_TIMEOUT
        int "RCU CPU stall timeout in seconds"
        depends on RCU_STALL_COMMON
index cc6c5815236ee3a13486aa9aa693a880a67c71f2..92ca49f90ef90dcaa13b786b14f7370a001ac81d 100644 (file)
@@ -17,6 +17,3 @@ CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_RCU_BOOST=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
index adc3abc82fb8241308a75d8a05f1168b1ec2e417..89705ed79596050313e6132cb3272045b184c42f 100644 (file)
@@ -1 +1,4 @@
 rcutorture.torture_type=rcu_bh maxcpus=8
+rcutree.gp_preinit_delay=3
+rcutree.gp_init_delay=3
+rcutree.gp_cleanup_delay=3
index 1cecab330ba04db7788703bb2cb78d56f19d2c52..35e639e3936636d441cd977a94af857c0e51347c 100644 (file)
@@ -19,8 +19,5 @@ CONFIG_DEBUG_LOCK_ALLOC=y
 CONFIG_PROVE_LOCKING=n
 CONFIG_RCU_BOOST=n
 CONFIG_RCU_EXPERT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
 CONFIG_DEBUG_OBJECTS=y
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
index 3b93ee544e70a2a85408933e4a6e06f3165a478e..7a17c503b382cdca20dbca7ed0d5189842e75a68 100644 (file)
@@ -17,6 +17,3 @@ CONFIG_RCU_BOOST=y
 CONFIG_RCU_KTHREAD_PRIO=2
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
index 120c0c88d1003a06aaa41a899b805935f82b52e7..9ef3aed126e9f4f6b669c48529e8fe6c3195ca0c 100644 (file)
@@ -1 +1,4 @@
 rcutorture.onoff_interval=1 rcutorture.onoff_holdoff=30
+rcutree.gp_preinit_delay=3
+rcutree.gp_init_delay=3
+rcutree.gp_cleanup_delay=3
index 851c01ae2cea20c14da09b8ff19ffcdfdc862da2..27d22695d64c0b00204a7009a624fde03a17ba35 100644 (file)
@@ -18,7 +18,4 @@ CONFIG_RCU_FANOUT_LEAF=3
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
 CONFIG_RCU_EQS_DEBUG=y
index d4cdc0d74e16885adb4d78e90267223f01c907d0..1257d3227b1e18a4e9863e223f0be509c5827528 100644 (file)
@@ -19,6 +19,3 @@ CONFIG_PROVE_LOCKING=y
 #CHECK#CONFIG_PROVE_RCU=y
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
index 15b3e1a86f74211f305519ee0a08dd932d5f8bb8..c7fd050dfcd994cbbc924aeff35fb479d2b4e765 100644 (file)
@@ -1,2 +1,5 @@
 rcutorture.torture_type=sched
 rcupdate.rcu_self_test_sched=1
+rcutree.gp_preinit_delay=3
+rcutree.gp_init_delay=3
+rcutree.gp_cleanup_delay=3
index 9215827649bdfb395f082c855448265db21283dd..05a4eec3f27b701f2c25d00c6714ea48d956038a 100644 (file)
@@ -21,6 +21,3 @@ CONFIG_PROVE_LOCKING=y
 CONFIG_DEBUG_OBJECTS=y
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=y
 CONFIG_RCU_EXPERT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
index dd90f28ed700b31e897ef5f2eff1ed577f031d05..ad18b52a2cad1f8fe2b8bb2e9aef25866ba3f426 100644 (file)
@@ -2,3 +2,6 @@ rcupdate.rcu_self_test=1
 rcupdate.rcu_self_test_bh=1
 rcupdate.rcu_self_test_sched=1
 rcutree.rcu_fanout_exact=1
+rcutree.gp_preinit_delay=3
+rcutree.gp_init_delay=3
+rcutree.gp_cleanup_delay=3
index 99f04e4c5162886242533e9b4de51e9066dad6a8..b9ddd3beeb9aef800f410d39739a2d5b156b2b36 100644 (file)
@@ -17,6 +17,3 @@ CONFIG_RCU_FANOUT_LEAF=2
 CONFIG_DEBUG_LOCK_ALLOC=n
 CONFIG_DEBUG_OBJECTS_RCU_HEAD=n
 CONFIG_RCU_EXPERT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP=y
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT=y
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT=y
index 364801b1a230758ad1ca410e5d4923bcc9446dbf..1dfec4657d957f17db821c0f7de47b333f3f4003 100644 (file)
@@ -28,9 +28,6 @@ CONFIG_RCU_TRACE -- Do half.
 CONFIG_SMP -- Need one !SMP for PREEMPT_RCU.
 CONFIG_RCU_EXPERT=n -- Do a few, but these have to be vanilla configurations.
 CONFIG_RCU_EQS_DEBUG -- Do at least one for CONFIG_NO_HZ_FULL and not.
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP -- Do for all but a couple TREE scenarios.
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT -- Do for all but a couple TREE scenarios.
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT -- Do for all but a couple TREE scenarios.
 
 RCU-bh: Do one with PREEMPT and one with !PREEMPT.
 RCU-sched: Do one with PREEMPT but not BOOST.
@@ -78,12 +75,6 @@ CONFIG_RCU_TORTURE_TEST_RUNNABLE
 
        Always used in KVM testing.
 
-CONFIG_RCU_TORTURE_TEST_SLOW_PREINIT_DELAY
-CONFIG_RCU_TORTURE_TEST_SLOW_INIT_DELAY
-CONFIG_RCU_TORTURE_TEST_SLOW_CLEANUP_DELAY
-
-       Inspection suffices, ignore.
-
 CONFIG_PREEMPT_RCU
 CONFIG_TREE_RCU
 CONFIG_TINY_RCU