]> Pileus Git - ~andy/linux/blob - kernel/time/Kconfig
Merge branch 'fixes' of git://git.linaro.org/people/rmk/linux-arm
[~andy/linux] / kernel / time / Kconfig
1 #
2 # Timer subsystem related configuration options
3 #
4
5 # Options selectable by arch Kconfig
6
7 # Watchdog function for clocksources to detect instabilities
8 config CLOCKSOURCE_WATCHDOG
9         bool
10
11 # Architecture has extra clocksource data
12 config ARCH_CLOCKSOURCE_DATA
13         bool
14
15 # Platforms has a persistent clock
16 config ALWAYS_USE_PERSISTENT_CLOCK
17         bool
18         default n
19
20 # Timekeeping vsyscall support
21 config GENERIC_TIME_VSYSCALL
22         bool
23
24 # Timekeeping vsyscall support
25 config GENERIC_TIME_VSYSCALL_OLD
26         bool
27
28 # ktime_t scalar 64bit nsec representation
29 config KTIME_SCALAR
30         bool
31
32 # Old style timekeeping
33 config ARCH_USES_GETTIMEOFFSET
34         bool
35
36 # The generic clock events infrastructure
37 config GENERIC_CLOCKEVENTS
38         bool
39
40 # Migration helper. Builds, but does not invoke
41 config GENERIC_CLOCKEVENTS_BUILD
42         bool
43         default y
44         depends on GENERIC_CLOCKEVENTS
45
46 # Architecture can handle broadcast in a driver-agnostic way
47 config ARCH_HAS_TICK_BROADCAST
48         bool
49
50 # Clockevents broadcasting infrastructure
51 config GENERIC_CLOCKEVENTS_BROADCAST
52         bool
53         depends on GENERIC_CLOCKEVENTS
54
55 # Automatically adjust the min. reprogramming time for
56 # clock event device
57 config GENERIC_CLOCKEVENTS_MIN_ADJUST
58         bool
59
60 # Generic update of CMOS clock
61 config GENERIC_CMOS_UPDATE
62         bool
63
64 if GENERIC_CLOCKEVENTS
65 menu "Timers subsystem"
66
67 # Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
68 # only related to the tick functionality. Oneshot clockevent devices
69 # are supported independ of this.
70 config TICK_ONESHOT
71         bool
72
73 config NO_HZ_COMMON
74         bool
75         depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
76         select TICK_ONESHOT
77
78 choice
79         prompt "Timer tick handling"
80         default NO_HZ_IDLE if NO_HZ
81
82 config HZ_PERIODIC
83         bool "Periodic timer ticks (constant rate, no dynticks)"
84         help
85           This option keeps the tick running periodically at a constant
86           rate, even when the CPU doesn't need it.
87
88 config NO_HZ_IDLE
89         bool "Idle dynticks system (tickless idle)"
90         depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
91         select NO_HZ_COMMON
92         help
93           This option enables a tickless idle system: timer interrupts
94           will only trigger on an as-needed basis when the system is idle.
95           This is usually interesting for energy saving.
96
97           Most of the time you want to say Y here.
98
99 config NO_HZ_FULL
100         bool "Full dynticks system (tickless)"
101         # NO_HZ_COMMON dependency
102         depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
103         # We need at least one periodic CPU for timekeeping
104         depends on SMP
105         # RCU_USER_QS dependency
106         depends on HAVE_CONTEXT_TRACKING
107         # VIRT_CPU_ACCOUNTING_GEN dependency
108         depends on 64BIT
109         select NO_HZ_COMMON
110         select RCU_USER_QS
111         select RCU_NOCB_CPU
112         select VIRT_CPU_ACCOUNTING_GEN
113         select CONTEXT_TRACKING_FORCE
114         select IRQ_WORK
115         help
116          Adaptively try to shutdown the tick whenever possible, even when
117          the CPU is running tasks. Typically this requires running a single
118          task on the CPU. Chances for running tickless are maximized when
119          the task mostly runs in userspace and has few kernel activity.
120
121          You need to fill up the nohz_full boot parameter with the
122          desired range of dynticks CPUs.
123
124          This is implemented at the expense of some overhead in user <-> kernel
125          transitions: syscalls, exceptions and interrupts. Even when it's
126          dynamically off.
127
128          Say N.
129
130 endchoice
131
132 config NO_HZ_FULL_ALL
133        bool "Full dynticks system on all CPUs by default"
134        depends on NO_HZ_FULL
135        help
136          If the user doesn't pass the nohz_full boot option to
137          define the range of full dynticks CPUs, consider that all
138          CPUs in the system are full dynticks by default.
139          Note the boot CPU will still be kept outside the range to
140          handle the timekeeping duty.
141
142 config NO_HZ
143         bool "Old Idle dynticks config"
144         depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
145         help
146           This is the old config entry that enables dynticks idle.
147           We keep it around for a little while to enforce backward
148           compatibility with older config files.
149
150 config HIGH_RES_TIMERS
151         bool "High Resolution Timer Support"
152         depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
153         select TICK_ONESHOT
154         help
155           This option enables high resolution timer support. If your
156           hardware is not capable then this option only increases
157           the size of the kernel image.
158
159 endmenu
160 endif