aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/time/Kconfig
diff options
context:
space:
mode:
authorFrederic Weisbecker <fweisbec@gmail.com>2011-08-10 17:21:01 -0400
committerFrederic Weisbecker <fweisbec@gmail.com>2013-04-03 07:56:03 -0400
commit3451d0243c3cdfd729b36f9684a14659d4895ca3 (patch)
tree5307f4492708ae089dd0a6d81b54f9e606707ca8 /kernel/time/Kconfig
parentab71d36ddb9e60d4ddb28a187718815d38c3c666 (diff)
nohz: Rename CONFIG_NO_HZ to CONFIG_NO_HZ_COMMON
We are planning to convert the dynticks Kconfig options layout into a choice menu. The user must be able to easily pick any of the following implementations: constant periodic tick, idle dynticks, full dynticks. As this implies a mutual exclusion, the two dynticks implementions need to converge on the selection of a common Kconfig option in order to ease the sharing of a common infrastructure. It would thus seem pretty natural to reuse CONFIG_NO_HZ to that end. It already implements all the idle dynticks code and the full dynticks depends on all that code for now. So ideally the choice menu would propose CONFIG_NO_HZ_IDLE and CONFIG_NO_HZ_EXTENDED then both would select CONFIG_NO_HZ. On the other hand we want to stay backward compatible: if CONFIG_NO_HZ is set in an older config file, we want to enable CONFIG_NO_HZ_IDLE by default. But we can't afford both at the same time or we run into a circular dependency: 1) CONFIG_NO_HZ_IDLE and CONFIG_NO_HZ_EXTENDED both select CONFIG_NO_HZ 2) If CONFIG_NO_HZ is set, we default to CONFIG_NO_HZ_IDLE We might be able to support that from Kconfig/Kbuild but it may not be wise to introduce such a confusing behaviour. So to solve this, create a new CONFIG_NO_HZ_COMMON option which gathers the common code between idle and full dynticks (that common code for now is simply the idle dynticks code) and select it from their referring Kconfig. Then we'll later create CONFIG_NO_HZ_IDLE and map CONFIG_NO_HZ to it for backward compatibility. Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Chris Metcalf <cmetcalf@tilera.com> Cc: Christoph Lameter <cl@linux.com> Cc: Geoff Levand <geoff@infradead.org> Cc: Gilad Ben Yossef <gilad@benyossef.com> Cc: Hakan Akkan <hakanakkan@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Kevin Hilman <khilman@linaro.org> Cc: Li Zhong <zhong@linux.vnet.ibm.com> Cc: Namhyung Kim <namhyung.kim@lge.com> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thomas Gleixner <tglx@linutronix.de>
Diffstat (limited to 'kernel/time/Kconfig')
-rw-r--r--kernel/time/Kconfig13
1 files changed, 9 insertions, 4 deletions
diff --git a/kernel/time/Kconfig b/kernel/time/Kconfig
index 726c33e00da2..c88fc43494c9 100644
--- a/kernel/time/Kconfig
+++ b/kernel/time/Kconfig
@@ -64,16 +64,21 @@ config GENERIC_CMOS_UPDATE
64if GENERIC_CLOCKEVENTS 64if GENERIC_CLOCKEVENTS
65menu "Timers subsystem" 65menu "Timers subsystem"
66 66
67# Core internal switch. Selected by NO_HZ / HIGH_RES_TIMERS. This is 67# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
68# only related to the tick functionality. Oneshot clockevent devices 68# only related to the tick functionality. Oneshot clockevent devices
69# are supported independ of this. 69# are supported independ of this.
70config TICK_ONESHOT 70config TICK_ONESHOT
71 bool 71 bool
72 72
73config NO_HZ_COMMON
74 bool
75 depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
76 select TICK_ONESHOT
77
73config NO_HZ 78config NO_HZ
74 bool "Tickless System (Dynamic Ticks)" 79 bool "Tickless System (Dynamic Ticks)"
75 depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS 80 depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
76 select TICK_ONESHOT 81 select NO_HZ_COMMON
77 help 82 help
78 This option enables a tickless system: timer interrupts will 83 This option enables a tickless system: timer interrupts will
79 only trigger on an as-needed basis both when the system is 84 only trigger on an as-needed basis both when the system is
@@ -81,14 +86,14 @@ config NO_HZ
81 86
82config NO_HZ_EXTENDED 87config NO_HZ_EXTENDED
83 bool "Full dynticks system" 88 bool "Full dynticks system"
84 # NO_HZ dependency 89 # NO_HZ_COMMON dependency
85 depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS 90 depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
86 # RCU_USER_QS 91 # RCU_USER_QS
87 depends on HAVE_CONTEXT_TRACKING && SMP 92 depends on HAVE_CONTEXT_TRACKING && SMP
88 # RCU_NOCB_CPU dependency 93 # RCU_NOCB_CPU dependency
89 depends on TREE_RCU || TREE_PREEMPT_RCU 94 depends on TREE_RCU || TREE_PREEMPT_RCU
90 depends on VIRT_CPU_ACCOUNTING_GEN 95 depends on VIRT_CPU_ACCOUNTING_GEN
91 select NO_HZ 96 select NO_HZ_COMMON
92 select RCU_USER_QS 97 select RCU_USER_QS
93 select RCU_NOCB_CPU 98 select RCU_NOCB_CPU
94 select CONTEXT_TRACKING_FORCE 99 select CONTEXT_TRACKING_FORCE