aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/rcutorture.c
diff options
context:
space:
mode:
authorPaul E. McKenney <paul.mckenney@linaro.org>2011-12-03 18:09:28 -0500
committerPaul E. McKenney <paulmck@linux.vnet.ibm.com>2011-12-11 13:32:21 -0500
commitf220242af98a5248209426f36d93226c3e0f2391 (patch)
tree64d1f3942a505c32763a9eaf463147f72ba7a554 /kernel/rcutorture.c
parent2987557f52b97f679f0c324d8f51b8d66e1f2084 (diff)
rcu: Make rcutorture test for hotpluggability before offlining CPUs
The rcutorture test now can automatically exercise CPU hotplug and collect success statistics, which can be correlated with other rcutorture activity. This permits rcutorture to completely exercise RCU regardless of what sort of userspace and filesystem layout is in use. Unfortunately, rcutorture is happy to attempt to offline CPUs that cannot be offlined, for example, CPU 0 in both the x86 and ARM architectures. Although this allows rcutorture testing to proceed normally, it confounds attempts at error analysis due to the resulting flood of spurious CPU-hotplug errors. Therefore, this commit uses the new cpu_is_hotpluggable() function to avoid attempting to offline CPUs that are not hotpluggable, which in turn avoids spurious CPU-hotplug errors. Signed-off-by: Paul E. McKenney <paul.mckenney@linaro.org> Signed-off-by: Paul E. McKenney <paulmck@linux.vnet.ibm.com>
Diffstat (limited to 'kernel/rcutorture.c')
-rw-r--r--kernel/rcutorture.c4
1 files changed, 2 insertions, 2 deletions
diff --git a/kernel/rcutorture.c b/kernel/rcutorture.c
index 1e422ae1506b..186ead9fa348 100644
--- a/kernel/rcutorture.c
+++ b/kernel/rcutorture.c
@@ -1388,7 +1388,7 @@ rcu_torture_onoff(void *arg)
1388 WARN_ON(maxcpu < 0); 1388 WARN_ON(maxcpu < 0);
1389 while (!kthread_should_stop()) { 1389 while (!kthread_should_stop()) {
1390 cpu = (rcu_random(&rand) >> 4) % (maxcpu + 1); 1390 cpu = (rcu_random(&rand) >> 4) % (maxcpu + 1);
1391 if (cpu_online(cpu)) { 1391 if (cpu_online(cpu) && cpu_is_hotpluggable(cpu)) {
1392 if (verbose) 1392 if (verbose)
1393 printk(KERN_ALERT "%s" TORTURE_FLAG 1393 printk(KERN_ALERT "%s" TORTURE_FLAG
1394 "rcu_torture_onoff task: offlining %d\n", 1394 "rcu_torture_onoff task: offlining %d\n",
@@ -1402,7 +1402,7 @@ rcu_torture_onoff(void *arg)
1402 torture_type, cpu); 1402 torture_type, cpu);
1403 n_offline_successes++; 1403 n_offline_successes++;
1404 } 1404 }
1405 } else { 1405 } else if (cpu_is_hotpluggable(cpu)) {
1406 if (verbose) 1406 if (verbose)
1407 printk(KERN_ALERT "%s" TORTURE_FLAG 1407 printk(KERN_ALERT "%s" TORTURE_FLAG
1408 "rcu_torture_onoff task: onlining %d\n", 1408 "rcu_torture_onoff task: onlining %d\n",