summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--Documentation/timers/NO_HZ.txt7
-rw-r--r--kernel/time/Kconfig10
-rw-r--r--kernel/time/tick-sched.c22
-rw-r--r--tools/testing/selftests/rcutorture/configs/rcu/TASKS031
-rw-r--r--tools/testing/selftests/rcutorture/configs/rcu/TASKS03.boot2
-rw-r--r--tools/testing/selftests/rcutorture/configs/rcu/TREE041
-rw-r--r--tools/testing/selftests/rcutorture/configs/rcu/TREE04.boot2
-rw-r--r--tools/testing/selftests/rcutorture/configs/rcu/TREE071
8 files changed, 4 insertions, 42 deletions
diff --git a/Documentation/timers/NO_HZ.txt b/Documentation/timers/NO_HZ.txt
index 2dcaf9adb7a7..9591092da5e0 100644
--- a/Documentation/timers/NO_HZ.txt
+++ b/Documentation/timers/NO_HZ.txt
@@ -131,13 +131,6 @@ error message, and the boot CPU will be removed from the mask. Note that
131this means that your system must have at least two CPUs in order for 131this means that your system must have at least two CPUs in order for
132CONFIG_NO_HZ_FULL=y to do anything for you. 132CONFIG_NO_HZ_FULL=y to do anything for you.
133 133
134Alternatively, the CONFIG_NO_HZ_FULL_ALL=y Kconfig parameter specifies
135that all CPUs other than the boot CPU are adaptive-ticks CPUs. This
136Kconfig parameter will be overridden by the "nohz_full=" boot parameter,
137so that if both the CONFIG_NO_HZ_FULL_ALL=y Kconfig parameter and
138the "nohz_full=1" boot parameter is specified, the boot parameter will
139prevail so that only CPU 1 will be an adaptive-ticks CPU.
140
141Finally, adaptive-ticks CPUs must have their RCU callbacks offloaded. 134Finally, adaptive-ticks CPUs must have their RCU callbacks offloaded.
142This is covered in the "RCU IMPLICATIONS" section below. 135This is covered in the "RCU IMPLICATIONS" section below.
143 136
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig
index f6b5f19223d6..78eabc41eaa6 100644
--- a/kernel/time/Kconfig
+++ b/kernel/time/Kconfig
@@ -113,16 +113,6 @@ config NO_HZ_FULL
113 113
114endchoice 114endchoice
115 115
116config NO_HZ_FULL_ALL
117 bool "Full dynticks system on all CPUs by default (except CPU 0)"
118 depends on NO_HZ_FULL
119 help
120 If the user doesn't pass the nohz_full boot option to
121 define the range of full dynticks CPUs, consider that all
122 CPUs in the system are full dynticks by default.
123 Note the boot CPU will still be kept outside the range to
124 handle the timekeeping duty.
125
126config NO_HZ 116config NO_HZ
127 bool "Old Idle dynticks config" 117 bool "Old Idle dynticks config"
128 depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS 118 depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
diff --git a/kernel/time/tick-sched.c b/kernel/time/tick-sched.c
index 29a5733eff83..ccd3782da0bf 100644
--- a/kernel/time/tick-sched.c
+++ b/kernel/time/tick-sched.c
@@ -405,30 +405,12 @@ static int tick_nohz_cpu_down(unsigned int cpu)
405 return 0; 405 return 0;
406} 406}
407 407
408static int tick_nohz_init_all(void)
409{
410 int err = -1;
411
412#ifdef CONFIG_NO_HZ_FULL_ALL
413 if (!alloc_cpumask_var(&tick_nohz_full_mask, GFP_KERNEL)) {
414 WARN(1, "NO_HZ: Can't allocate full dynticks cpumask\n");
415 return err;
416 }
417 err = 0;
418 cpumask_setall(tick_nohz_full_mask);
419 tick_nohz_full_running = true;
420#endif
421 return err;
422}
423
424void __init tick_nohz_init(void) 408void __init tick_nohz_init(void)
425{ 409{
426 int cpu, ret; 410 int cpu, ret;
427 411
428 if (!tick_nohz_full_running) { 412 if (!tick_nohz_full_running)
429 if (tick_nohz_init_all() < 0) 413 return;
430 return;
431 }
432 414
433 /* 415 /*
434 * Full dynticks uses irq work to drive the tick rescheduling on safe 416 * Full dynticks uses irq work to drive the tick rescheduling on safe
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TASKS03 b/tools/testing/selftests/rcutorture/configs/rcu/TASKS03
index c70c51d5ded1..28568b72a31b 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TASKS03
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TASKS03
@@ -9,5 +9,4 @@ CONFIG_PREEMPT=y
9CONFIG_HZ_PERIODIC=n 9CONFIG_HZ_PERIODIC=n
10CONFIG_NO_HZ_IDLE=n 10CONFIG_NO_HZ_IDLE=n
11CONFIG_NO_HZ_FULL=y 11CONFIG_NO_HZ_FULL=y
12CONFIG_NO_HZ_FULL_ALL=y
13#CHECK#CONFIG_RCU_EXPERT=n 12#CHECK#CONFIG_RCU_EXPERT=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TASKS03.boot b/tools/testing/selftests/rcutorture/configs/rcu/TASKS03.boot
index cd2a188eeb6d..838297c58318 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TASKS03.boot
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TASKS03.boot
@@ -1 +1 @@
rcutorture.torture_type=tasks rcutorture.torture_type=tasks nohz_full=1
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04 b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
index 27d22695d64c..24c9f6012e35 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04
@@ -7,7 +7,6 @@ CONFIG_PREEMPT=n
7CONFIG_HZ_PERIODIC=n 7CONFIG_HZ_PERIODIC=n
8CONFIG_NO_HZ_IDLE=n 8CONFIG_NO_HZ_IDLE=n
9CONFIG_NO_HZ_FULL=y 9CONFIG_NO_HZ_FULL=y
10CONFIG_NO_HZ_FULL_ALL=y
11CONFIG_RCU_FAST_NO_HZ=y 10CONFIG_RCU_FAST_NO_HZ=y
12CONFIG_RCU_TRACE=y 11CONFIG_RCU_TRACE=y
13CONFIG_HOTPLUG_CPU=n 12CONFIG_HOTPLUG_CPU=n
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE04.boot b/tools/testing/selftests/rcutorture/configs/rcu/TREE04.boot
index e34c33430447..e6071bb96c7d 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE04.boot
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE04.boot
@@ -1 +1 @@
rcutorture.torture_type=rcu_bh rcutree.rcu_fanout_leaf=4 rcutorture.torture_type=rcu_bh rcutree.rcu_fanout_leaf=4 nohz_full=1-7
diff --git a/tools/testing/selftests/rcutorture/configs/rcu/TREE07 b/tools/testing/selftests/rcutorture/configs/rcu/TREE07
index 0f4759f4232e..d7afb271a586 100644
--- a/tools/testing/selftests/rcutorture/configs/rcu/TREE07
+++ b/tools/testing/selftests/rcutorture/configs/rcu/TREE07
@@ -7,7 +7,6 @@ CONFIG_PREEMPT=n
7CONFIG_HZ_PERIODIC=n 7CONFIG_HZ_PERIODIC=n
8CONFIG_NO_HZ_IDLE=n 8CONFIG_NO_HZ_IDLE=n
9CONFIG_NO_HZ_FULL=y 9CONFIG_NO_HZ_FULL=y
10CONFIG_NO_HZ_FULL_ALL=n
11CONFIG_RCU_FAST_NO_HZ=n 10CONFIG_RCU_FAST_NO_HZ=n
12CONFIG_RCU_TRACE=y 11CONFIG_RCU_TRACE=y
13CONFIG_HOTPLUG_CPU=y 12CONFIG_HOTPLUG_CPU=y