diff options
author | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2017-05-15 19:26:34 -0400 |
---|---|---|
committer | Paul E. McKenney <paulmck@linux.vnet.ibm.com> | 2017-06-08 21:52:43 -0400 |
commit | 44c65ff2e3b0b48250a970183ab53b0602c25764 (patch) | |
tree | 6bc765473304d563d36c701e108773786df108a8 | |
parent | ae91aa0adb14dc33114d566feca2f7cb7a96b8b7 (diff) |
rcu: Eliminate NOCBs CPU-state Kconfig options
The CONFIG_RCU_NOCB_CPU_ALL, CONFIG_RCU_NOCB_CPU_NONE, and
CONFIG_RCU_NOCB_CPU_ZERO Kconfig options are used only in testing and
are redundant with the rcu_nocbs= boot parameter. This commit therefore
removes these three Kconfig options and adjusts the rcutorture scripts
to use the boot parameter instead.
Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
-rw-r--r-- | Documentation/kernel-per-CPU-kthreads.txt | 31 | ||||
-rw-r--r-- | Documentation/timers/NO_HZ.txt | 29 | ||||
-rw-r--r-- | init/Kconfig | 53 | ||||
-rw-r--r-- | kernel/rcu/rcu.h | 4 | ||||
-rw-r--r-- | kernel/rcu/tree_plugin.h | 27 | ||||
-rw-r--r-- | tools/testing/selftests/rcutorture/configs/rcu/TREE01 | 1 | ||||
-rw-r--r-- | tools/testing/selftests/rcutorture/configs/rcu/TREE01.boot | 1 | ||||
-rw-r--r-- | tools/testing/selftests/rcutorture/configs/rcu/TREE05 | 1 | ||||
-rw-r--r-- | tools/testing/selftests/rcutorture/configs/rcu/TREE08 | 1 | ||||
-rw-r--r-- | tools/testing/selftests/rcutorture/configs/rcu/TREE08.boot | 1 | ||||
-rw-r--r-- | tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt | 8 |
11 files changed, 26 insertions, 131 deletions
diff --git a/Documentation/kernel-per-CPU-kthreads.txt b/Documentation/kernel-per-CPU-kthreads.txt index df31e30b6a02..2cb7dc5c0e0d 100644 --- a/Documentation/kernel-per-CPU-kthreads.txt +++ b/Documentation/kernel-per-CPU-kthreads.txt | |||
@@ -109,13 +109,12 @@ SCHED_SOFTIRQ: Do all of the following: | |||
109 | on that CPU. If a thread that expects to run on the de-jittered | 109 | on that CPU. If a thread that expects to run on the de-jittered |
110 | CPU awakens, the scheduler will send an IPI that can result in | 110 | CPU awakens, the scheduler will send an IPI that can result in |
111 | a subsequent SCHED_SOFTIRQ. | 111 | a subsequent SCHED_SOFTIRQ. |
112 | 2. Build with CONFIG_RCU_NOCB_CPU=y, CONFIG_RCU_NOCB_CPU_ALL=y, | 112 | 2. CONFIG_NO_HZ_FULL=y and ensure that the CPU to be de-jittered |
113 | CONFIG_NO_HZ_FULL=y, and, in addition, ensure that the CPU | 113 | is marked as an adaptive-ticks CPU using the "nohz_full=" |
114 | to be de-jittered is marked as an adaptive-ticks CPU using the | 114 | boot parameter. This reduces the number of scheduler-clock |
115 | "nohz_full=" boot parameter. This reduces the number of | 115 | interrupts that the de-jittered CPU receives, minimizing its |
116 | scheduler-clock interrupts that the de-jittered CPU receives, | 116 | chances of being selected to do the load balancing work that |
117 | minimizing its chances of being selected to do the load balancing | 117 | runs in SCHED_SOFTIRQ context. |
118 | work that runs in SCHED_SOFTIRQ context. | ||
119 | 3. To the extent possible, keep the CPU out of the kernel when it | 118 | 3. To the extent possible, keep the CPU out of the kernel when it |
120 | is non-idle, for example, by avoiding system calls and by | 119 | is non-idle, for example, by avoiding system calls and by |
121 | forcing both kernel threads and interrupts to execute elsewhere. | 120 | forcing both kernel threads and interrupts to execute elsewhere. |
@@ -135,11 +134,10 @@ HRTIMER_SOFTIRQ: Do all of the following: | |||
135 | RCU_SOFTIRQ: Do at least one of the following: | 134 | RCU_SOFTIRQ: Do at least one of the following: |
136 | 1. Offload callbacks and keep the CPU in either dyntick-idle or | 135 | 1. Offload callbacks and keep the CPU in either dyntick-idle or |
137 | adaptive-ticks state by doing all of the following: | 136 | adaptive-ticks state by doing all of the following: |
138 | a. Build with CONFIG_RCU_NOCB_CPU=y, CONFIG_RCU_NOCB_CPU_ALL=y, | 137 | a. CONFIG_NO_HZ_FULL=y and ensure that the CPU to be |
139 | CONFIG_NO_HZ_FULL=y, and, in addition ensure that the CPU | 138 | de-jittered is marked as an adaptive-ticks CPU using the |
140 | to be de-jittered is marked as an adaptive-ticks CPU using | 139 | "nohz_full=" boot parameter. Bind the rcuo kthreads to |
141 | the "nohz_full=" boot parameter. Bind the rcuo kthreads | 140 | housekeeping CPUs, which can tolerate OS jitter. |
142 | to housekeeping CPUs, which can tolerate OS jitter. | ||
143 | b. To the extent possible, keep the CPU out of the kernel | 141 | b. To the extent possible, keep the CPU out of the kernel |
144 | when it is non-idle, for example, by avoiding system | 142 | when it is non-idle, for example, by avoiding system |
145 | calls and by forcing both kernel threads and interrupts | 143 | calls and by forcing both kernel threads and interrupts |
@@ -236,11 +234,10 @@ To reduce its OS jitter, do at least one of the following: | |||
236 | is feasible only if your workload never requires RCU priority | 234 | is feasible only if your workload never requires RCU priority |
237 | boosting, for example, if you ensure frequent idle time on all | 235 | boosting, for example, if you ensure frequent idle time on all |
238 | CPUs that might execute within the kernel. | 236 | CPUs that might execute within the kernel. |
239 | 3. Build with CONFIG_RCU_NOCB_CPU=y and CONFIG_RCU_NOCB_CPU_ALL=y, | 237 | 3. Build with CONFIG_RCU_NOCB_CPU=y and boot with the rcu_nocbs= |
240 | which offloads all RCU callbacks to kthreads that can be moved | 238 | boot parameter offloading RCU callbacks from all CPUs susceptible |
241 | off of CPUs susceptible to OS jitter. This approach prevents the | 239 | to OS jitter. This approach prevents the rcuc/%u kthreads from |
242 | rcuc/%u kthreads from having any work to do, so that they are | 240 | having any work to do, so that they are never awakened. |
243 | never awakened. | ||
244 | 4. Ensure that the CPU never enters the kernel, and, in particular, | 241 | 4. Ensure that the CPU never enters the kernel, and, in particular, |
245 | avoid initiating any CPU hotplug operations on this CPU. This is | 242 | avoid initiating any CPU hotplug operations on this CPU. This is |
246 | another way of preventing any callbacks from being queued on the | 243 | another way of preventing any callbacks from being queued on the |
diff --git a/Documentation/timers/NO_HZ.txt b/Documentation/timers/NO_HZ.txt index 6eaf576294f3..2dcaf9adb7a7 100644 --- a/Documentation/timers/NO_HZ.txt +++ b/Documentation/timers/NO_HZ.txt | |||
@@ -194,32 +194,9 @@ that the RCU callbacks are processed in a timely fashion. | |||
194 | 194 | ||
195 | Another approach is to offload RCU callback processing to "rcuo" kthreads | 195 | Another approach is to offload RCU callback processing to "rcuo" kthreads |
196 | using the CONFIG_RCU_NOCB_CPU=y Kconfig option. The specific CPUs to | 196 | using the CONFIG_RCU_NOCB_CPU=y Kconfig option. The specific CPUs to |
197 | offload may be selected via several methods: | 197 | offload may be selected using The "rcu_nocbs=" kernel boot parameter, |
198 | 198 | which takes a comma-separated list of CPUs and CPU ranges, for example, | |
199 | 1. One of three mutually exclusive Kconfig options specify a | 199 | "1,3-5" selects CPUs 1, 3, 4, and 5. |
200 | build-time default for the CPUs to offload: | ||
201 | |||
202 | a. The CONFIG_RCU_NOCB_CPU_NONE=y Kconfig option results in | ||
203 | no CPUs being offloaded. | ||
204 | |||
205 | b. The CONFIG_RCU_NOCB_CPU_ZERO=y Kconfig option causes | ||
206 | CPU 0 to be offloaded. | ||
207 | |||
208 | c. The CONFIG_RCU_NOCB_CPU_ALL=y Kconfig option causes all | ||
209 | CPUs to be offloaded. Note that the callbacks will be | ||
210 | offloaded to "rcuo" kthreads, and that those kthreads | ||
211 | will in fact run on some CPU. However, this approach | ||
212 | gives fine-grained control on exactly which CPUs the | ||
213 | callbacks run on, along with their scheduling priority | ||
214 | (including the default of SCHED_OTHER), and it further | ||
215 | allows this control to be varied dynamically at runtime. | ||
216 | |||
217 | 2. The "rcu_nocbs=" kernel boot parameter, which takes a comma-separated | ||
218 | list of CPUs and CPU ranges, for example, "1,3-5" selects CPUs 1, | ||
219 | 3, 4, and 5. The specified CPUs will be offloaded in addition to | ||
220 | any CPUs specified as offloaded by CONFIG_RCU_NOCB_CPU_ZERO=y or | ||
221 | CONFIG_RCU_NOCB_CPU_ALL=y. This means that the "rcu_nocbs=" boot | ||
222 | parameter has no effect for kernels built with RCU_NOCB_CPU_ALL=y. | ||
223 | 200 | ||
224 | The offloaded CPUs will never queue RCU callbacks, and therefore RCU | 201 | The offloaded CPUs will never queue RCU callbacks, and therefore RCU |
225 | never prevents offloaded CPUs from entering either dyntick-idle mode | 202 | never prevents offloaded CPUs from entering either dyntick-idle mode |
diff --git a/init/Kconfig b/init/Kconfig index 3025383ab443..dc431c6109f2 100644 --- a/init/Kconfig +++ b/init/Kconfig | |||
@@ -709,59 +709,6 @@ config RCU_NOCB_CPU | |||
709 | Say Y here if you want to help to debug reduced OS jitter. | 709 | Say Y here if you want to help to debug reduced OS jitter. |
710 | Say N here if you are unsure. | 710 | Say N here if you are unsure. |
711 | 711 | ||
712 | choice | ||
713 | prompt "Build-forced no-CBs CPUs" | ||
714 | default RCU_NOCB_CPU_NONE | ||
715 | depends on RCU_NOCB_CPU | ||
716 | help | ||
717 | This option allows no-CBs CPUs (whose RCU callbacks are invoked | ||
718 | from kthreads rather than from softirq context) to be specified | ||
719 | at build time. Additional no-CBs CPUs may be specified by | ||
720 | the rcu_nocbs= boot parameter. | ||
721 | |||
722 | config RCU_NOCB_CPU_NONE | ||
723 | bool "No build_forced no-CBs CPUs" | ||
724 | help | ||
725 | This option does not force any of the CPUs to be no-CBs CPUs. | ||
726 | Only CPUs designated by the rcu_nocbs= boot parameter will be | ||
727 | no-CBs CPUs, whose RCU callbacks will be invoked by per-CPU | ||
728 | kthreads whose names begin with "rcuo". All other CPUs will | ||
729 | invoke their own RCU callbacks in softirq context. | ||
730 | |||
731 | Select this option if you want to choose no-CBs CPUs at | ||
732 | boot time, for example, to allow testing of different no-CBs | ||
733 | configurations without having to rebuild the kernel each time. | ||
734 | |||
735 | config RCU_NOCB_CPU_ZERO | ||
736 | bool "CPU 0 is a build_forced no-CBs CPU" | ||
737 | help | ||
738 | This option forces CPU 0 to be a no-CBs CPU, so that its RCU | ||
739 | callbacks are invoked by a per-CPU kthread whose name begins | ||
740 | with "rcuo". Additional CPUs may be designated as no-CBs | ||
741 | CPUs using the rcu_nocbs= boot parameter will be no-CBs CPUs. | ||
742 | All other CPUs will invoke their own RCU callbacks in softirq | ||
743 | context. | ||
744 | |||
745 | Select this if CPU 0 needs to be a no-CBs CPU for real-time | ||
746 | or energy-efficiency reasons, but the real reason it exists | ||
747 | is to ensure that randconfig testing covers mixed systems. | ||
748 | |||
749 | config RCU_NOCB_CPU_ALL | ||
750 | bool "All CPUs are build_forced no-CBs CPUs" | ||
751 | help | ||
752 | This option forces all CPUs to be no-CBs CPUs. The rcu_nocbs= | ||
753 | boot parameter will be ignored. All CPUs' RCU callbacks will | ||
754 | be executed in the context of per-CPU rcuo kthreads created for | ||
755 | this purpose. Assuming that the kthreads whose names start with | ||
756 | "rcuo" are bound to "housekeeping" CPUs, this reduces OS jitter | ||
757 | on the remaining CPUs, but might decrease memory locality during | ||
758 | RCU-callback invocation, thus potentially degrading throughput. | ||
759 | |||
760 | Select this if all CPUs need to be no-CBs CPUs for real-time | ||
761 | or energy-efficiency reasons. | ||
762 | |||
763 | endchoice | ||
764 | |||
765 | endmenu # "RCU Subsystem" | 712 | endmenu # "RCU Subsystem" |
766 | 713 | ||
767 | config BUILD_BIN2C | 714 | config BUILD_BIN2C |
diff --git a/kernel/rcu/rcu.h b/kernel/rcu/rcu.h index d06c42deee0b..808b8c85f626 100644 --- a/kernel/rcu/rcu.h +++ b/kernel/rcu/rcu.h | |||
@@ -564,9 +564,7 @@ void rcu_bh_force_quiescent_state(void); | |||
564 | void rcu_sched_force_quiescent_state(void); | 564 | void rcu_sched_force_quiescent_state(void); |
565 | #endif /* #else #ifdef CONFIG_TINY_RCU */ | 565 | #endif /* #else #ifdef CONFIG_TINY_RCU */ |
566 | 566 | ||
567 | #if defined(CONFIG_RCU_NOCB_CPU_ALL) | 567 | #ifdef CONFIG_RCU_NOCB_CPU |
568 | static inline bool rcu_is_nocb_cpu(int cpu) { return true; } | ||
569 | #elif defined(CONFIG_RCU_NOCB_CPU) | ||
570 | bool rcu_is_nocb_cpu(int cpu); | 568 | bool rcu_is_nocb_cpu(int cpu); |
571 | #else | 569 | #else |
572 | static inline bool rcu_is_nocb_cpu(int cpu) { return false; } | 570 | static inline bool rcu_is_nocb_cpu(int cpu) { return false; } |
diff --git a/kernel/rcu/tree_plugin.h b/kernel/rcu/tree_plugin.h index 43f2f8026b4a..908b309d60d7 100644 --- a/kernel/rcu/tree_plugin.h +++ b/kernel/rcu/tree_plugin.h | |||
@@ -1296,8 +1296,7 @@ static void rcu_prepare_kthreads(int cpu) | |||
1296 | int rcu_needs_cpu(u64 basemono, u64 *nextevt) | 1296 | int rcu_needs_cpu(u64 basemono, u64 *nextevt) |
1297 | { | 1297 | { |
1298 | *nextevt = KTIME_MAX; | 1298 | *nextevt = KTIME_MAX; |
1299 | return IS_ENABLED(CONFIG_RCU_NOCB_CPU_ALL) | 1299 | return rcu_cpu_has_callbacks(NULL); |
1300 | ? 0 : rcu_cpu_has_callbacks(NULL); | ||
1301 | } | 1300 | } |
1302 | 1301 | ||
1303 | /* | 1302 | /* |
@@ -1409,10 +1408,6 @@ int rcu_needs_cpu(u64 basemono, u64 *nextevt) | |||
1409 | unsigned long dj; | 1408 | unsigned long dj; |
1410 | 1409 | ||
1411 | RCU_LOCKDEP_WARN(!irqs_disabled(), "rcu_needs_cpu() invoked with irqs enabled!!!"); | 1410 | RCU_LOCKDEP_WARN(!irqs_disabled(), "rcu_needs_cpu() invoked with irqs enabled!!!"); |
1412 | if (IS_ENABLED(CONFIG_RCU_NOCB_CPU_ALL)) { | ||
1413 | *nextevt = KTIME_MAX; | ||
1414 | return 0; | ||
1415 | } | ||
1416 | 1411 | ||
1417 | /* Snapshot to detect later posting of non-lazy callback. */ | 1412 | /* Snapshot to detect later posting of non-lazy callback. */ |
1418 | rdtp->nonlazy_posted_snap = rdtp->nonlazy_posted; | 1413 | rdtp->nonlazy_posted_snap = rdtp->nonlazy_posted; |
@@ -1462,8 +1457,7 @@ static void rcu_prepare_for_idle(void) | |||
1462 | int tne; | 1457 | int tne; |
1463 | 1458 | ||
1464 | RCU_LOCKDEP_WARN(!irqs_disabled(), "rcu_prepare_for_idle() invoked with irqs enabled!!!"); | 1459 | RCU_LOCKDEP_WARN(!irqs_disabled(), "rcu_prepare_for_idle() invoked with irqs enabled!!!"); |
1465 | if (IS_ENABLED(CONFIG_RCU_NOCB_CPU_ALL) || | 1460 | if (rcu_is_nocb_cpu(smp_processor_id())) |
1466 | rcu_is_nocb_cpu(smp_processor_id())) | ||
1467 | return; | 1461 | return; |
1468 | 1462 | ||
1469 | /* Handle nohz enablement switches conservatively. */ | 1463 | /* Handle nohz enablement switches conservatively. */ |
@@ -1518,8 +1512,7 @@ static void rcu_prepare_for_idle(void) | |||
1518 | static void rcu_cleanup_after_idle(void) | 1512 | static void rcu_cleanup_after_idle(void) |
1519 | { | 1513 | { |
1520 | RCU_LOCKDEP_WARN(!irqs_disabled(), "rcu_cleanup_after_idle() invoked with irqs enabled!!!"); | 1514 | RCU_LOCKDEP_WARN(!irqs_disabled(), "rcu_cleanup_after_idle() invoked with irqs enabled!!!"); |
1521 | if (IS_ENABLED(CONFIG_RCU_NOCB_CPU_ALL) || | 1515 | if (rcu_is_nocb_cpu(smp_processor_id())) |
1522 | rcu_is_nocb_cpu(smp_processor_id())) | ||
1523 | return; | 1516 | return; |
1524 | if (rcu_try_advance_all_cbs()) | 1517 | if (rcu_try_advance_all_cbs()) |
1525 | invoke_rcu_core(); | 1518 | invoke_rcu_core(); |
@@ -1786,7 +1779,6 @@ static void rcu_init_one_nocb(struct rcu_node *rnp) | |||
1786 | init_swait_queue_head(&rnp->nocb_gp_wq[1]); | 1779 | init_swait_queue_head(&rnp->nocb_gp_wq[1]); |
1787 | } | 1780 | } |
1788 | 1781 | ||
1789 | #ifndef CONFIG_RCU_NOCB_CPU_ALL | ||
1790 | /* Is the specified CPU a no-CBs CPU? */ | 1782 | /* Is the specified CPU a no-CBs CPU? */ |
1791 | bool rcu_is_nocb_cpu(int cpu) | 1783 | bool rcu_is_nocb_cpu(int cpu) |
1792 | { | 1784 | { |
@@ -1794,7 +1786,6 @@ bool rcu_is_nocb_cpu(int cpu) | |||
1794 | return cpumask_test_cpu(cpu, rcu_nocb_mask); | 1786 | return cpumask_test_cpu(cpu, rcu_nocb_mask); |
1795 | return false; | 1787 | return false; |
1796 | } | 1788 | } |
1797 | #endif /* #ifndef CONFIG_RCU_NOCB_CPU_ALL */ | ||
1798 | 1789 | ||
1799 | /* | 1790 | /* |
1800 | * Kick the leader kthread for this NOCB group. | 1791 | * Kick the leader kthread for this NOCB group. |
@@ -2253,10 +2244,6 @@ void __init rcu_init_nohz(void) | |||
2253 | bool need_rcu_nocb_mask = true; | 2244 | bool need_rcu_nocb_mask = true; |
2254 | struct rcu_state *rsp; | 2245 | struct rcu_state *rsp; |
2255 | 2246 | ||
2256 | #ifdef CONFIG_RCU_NOCB_CPU_NONE | ||
2257 | need_rcu_nocb_mask = false; | ||
2258 | #endif /* #ifndef CONFIG_RCU_NOCB_CPU_NONE */ | ||
2259 | |||
2260 | #if defined(CONFIG_NO_HZ_FULL) | 2247 | #if defined(CONFIG_NO_HZ_FULL) |
2261 | if (tick_nohz_full_running && cpumask_weight(tick_nohz_full_mask)) | 2248 | if (tick_nohz_full_running && cpumask_weight(tick_nohz_full_mask)) |
2262 | need_rcu_nocb_mask = true; | 2249 | need_rcu_nocb_mask = true; |
@@ -2272,14 +2259,6 @@ void __init rcu_init_nohz(void) | |||
2272 | if (!have_rcu_nocb_mask) | 2259 | if (!have_rcu_nocb_mask) |
2273 | return; | 2260 | return; |
2274 | 2261 | ||
2275 | #ifdef CONFIG_RCU_NOCB_CPU_ZERO | ||
2276 | pr_info("\tOffload RCU callbacks from CPU 0\n"); | ||
2277 | cpumask_set_cpu(0, rcu_nocb_mask); | ||
2278 | #endif /* #ifdef CONFIG_RCU_NOCB_CPU_ZERO */ | ||
2279 | #ifdef CONFIG_RCU_NOCB_CPU_ALL | ||
2280 | pr_info("\tOffload RCU callbacks from all CPUs\n"); | ||
2281 | cpumask_copy(rcu_nocb_mask, cpu_possible_mask); | ||
2282 | #endif /* #ifdef CONFIG_RCU_NOCB_CPU_ALL */ | ||
2283 | #if defined(CONFIG_NO_HZ_FULL) | 2262 | #if defined(CONFIG_NO_HZ_FULL) |
2284 | if (tick_nohz_full_running) | 2263 | if (tick_nohz_full_running) |
2285 | cpumask_or(rcu_nocb_mask, rcu_nocb_mask, tick_nohz_full_mask); | 2264 | cpumask_or(rcu_nocb_mask, rcu_nocb_mask, tick_nohz_full_mask); |
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE01 b/tools/testing/selftests/rcutorture/configs/rcu/TREE01 index 92ca49f90ef9..b5b53973c01e 100644 --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE01 +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE01 | |||
@@ -12,7 +12,6 @@ CONFIG_HOTPLUG_CPU=y | |||
12 | CONFIG_MAXSMP=y | 12 | CONFIG_MAXSMP=y |
13 | CONFIG_CPUMASK_OFFSTACK=y | 13 | CONFIG_CPUMASK_OFFSTACK=y |
14 | CONFIG_RCU_NOCB_CPU=y | 14 | CONFIG_RCU_NOCB_CPU=y |
15 | CONFIG_RCU_NOCB_CPU_ZERO=y | ||
16 | CONFIG_DEBUG_LOCK_ALLOC=n | 15 | CONFIG_DEBUG_LOCK_ALLOC=n |
17 | CONFIG_RCU_BOOST=n | 16 | CONFIG_RCU_BOOST=n |
18 | CONFIG_DEBUG_OBJECTS_RCU_HEAD=n | 17 | CONFIG_DEBUG_OBJECTS_RCU_HEAD=n |
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE01.boot b/tools/testing/selftests/rcutorture/configs/rcu/TREE01.boot index 89705ed79596..1d14e1383016 100644 --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE01.boot +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE01.boot | |||
@@ -2,3 +2,4 @@ rcutorture.torture_type=rcu_bh maxcpus=8 | |||
2 | rcutree.gp_preinit_delay=3 | 2 | rcutree.gp_preinit_delay=3 |
3 | rcutree.gp_init_delay=3 | 3 | rcutree.gp_init_delay=3 |
4 | rcutree.gp_cleanup_delay=3 | 4 | rcutree.gp_cleanup_delay=3 |
5 | rcu_nocbs=0 | ||
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 b/tools/testing/selftests/rcutorture/configs/rcu/TREE05 index 1257d3227b1e..2dde0d9964e3 100644 --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE05 +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE05 | |||
@@ -13,7 +13,6 @@ CONFIG_HOTPLUG_CPU=y | |||
13 | CONFIG_RCU_FANOUT=6 | 13 | CONFIG_RCU_FANOUT=6 |
14 | CONFIG_RCU_FANOUT_LEAF=6 | 14 | CONFIG_RCU_FANOUT_LEAF=6 |
15 | CONFIG_RCU_NOCB_CPU=y | 15 | CONFIG_RCU_NOCB_CPU=y |
16 | CONFIG_RCU_NOCB_CPU_NONE=y | ||
17 | CONFIG_DEBUG_LOCK_ALLOC=y | 16 | CONFIG_DEBUG_LOCK_ALLOC=y |
18 | CONFIG_PROVE_LOCKING=y | 17 | CONFIG_PROVE_LOCKING=y |
19 | #CHECK#CONFIG_PROVE_RCU=y | 18 | #CHECK#CONFIG_PROVE_RCU=y |
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE08 b/tools/testing/selftests/rcutorture/configs/rcu/TREE08 index 099cc63c6a3b..fb1c763c10c5 100644 --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE08 +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE08 | |||
@@ -15,7 +15,6 @@ CONFIG_HIBERNATION=n | |||
15 | CONFIG_RCU_FANOUT=3 | 15 | CONFIG_RCU_FANOUT=3 |
16 | CONFIG_RCU_FANOUT_LEAF=2 | 16 | CONFIG_RCU_FANOUT_LEAF=2 |
17 | CONFIG_RCU_NOCB_CPU=y | 17 | CONFIG_RCU_NOCB_CPU=y |
18 | CONFIG_RCU_NOCB_CPU_ALL=y | ||
19 | CONFIG_DEBUG_LOCK_ALLOC=n | 18 | CONFIG_DEBUG_LOCK_ALLOC=n |
20 | CONFIG_PROVE_LOCKING=n | 19 | CONFIG_PROVE_LOCKING=n |
21 | CONFIG_RCU_BOOST=n | 20 | CONFIG_RCU_BOOST=n |
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE08.boot b/tools/testing/selftests/rcutorture/configs/rcu/TREE08.boot index fb066dc82769..1bd8efc4141e 100644 --- a/tools/testing/selftests/rcutorture/configs/rcu/TREE08.boot +++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE08.boot | |||
@@ -2,3 +2,4 @@ rcutorture.torture_type=sched | |||
2 | rcupdate.rcu_self_test=1 | 2 | rcupdate.rcu_self_test=1 |
3 | rcupdate.rcu_self_test_sched=1 | 3 | rcupdate.rcu_self_test_sched=1 |
4 | rcutree.rcu_fanout_exact=1 | 4 | rcutree.rcu_fanout_exact=1 |
5 | rcu_nocbs=0-7 | ||
diff --git a/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt b/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt index 928fadaecc25..9ad3f89c8dc7 100644 --- a/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt +++ b/tools/testing/selftests/rcutorture/doc/TREE_RCU-kconfig.txt | |||
@@ -16,11 +16,9 @@ CONFIG_PROVE_RCU -- Hardwired to CONFIG_PROVE_LOCKING. | |||
16 | CONFIG_RCU_BOOST -- one of PREEMPT_RCU. | 16 | CONFIG_RCU_BOOST -- one of PREEMPT_RCU. |
17 | CONFIG_RCU_FANOUT -- Cover hierarchy, but overlap with others. | 17 | CONFIG_RCU_FANOUT -- Cover hierarchy, but overlap with others. |
18 | CONFIG_RCU_FANOUT_LEAF -- Do one non-default. | 18 | CONFIG_RCU_FANOUT_LEAF -- Do one non-default. |
19 | CONFIG_RCU_FAST_NO_HZ -- Do one, but not with CONFIG_RCU_NOCB_CPU_ALL. | 19 | CONFIG_RCU_FAST_NO_HZ -- Do one, but not with all nohz_full CPUs. |
20 | CONFIG_RCU_NOCB_CPU -- Do three, see below. | 20 | CONFIG_RCU_NOCB_CPU -- Do three, one with no rcu_nocbs CPUs, one with |
21 | CONFIG_RCU_NOCB_CPU_ALL -- Do one. | 21 | rcu_nocbs=0, and one with all rcu_nocbs CPUs. |
22 | CONFIG_RCU_NOCB_CPU_NONE -- Do one. | ||
23 | CONFIG_RCU_NOCB_CPU_ZERO -- Do one. | ||
24 | CONFIG_RCU_TRACE -- Do half. | 22 | CONFIG_RCU_TRACE -- Do half. |
25 | CONFIG_SMP -- Need one !SMP for PREEMPT_RCU. | 23 | CONFIG_SMP -- Need one !SMP for PREEMPT_RCU. |
26 | CONFIG_RCU_EXPERT=n -- Do a few, but these have to be vanilla configurations. | 24 | CONFIG_RCU_EXPERT=n -- Do a few, but these have to be vanilla configurations. |