xref: /openbmc/linux/kernel/time/Kconfig (revision ca79522c)
1#
2# Timer subsystem related configuration options
3#
4
5# Options selectable by arch Kconfig
6
7# Watchdog function for clocksources to detect instabilities
8config CLOCKSOURCE_WATCHDOG
9	bool
10
11# Architecture has extra clocksource data
12config ARCH_CLOCKSOURCE_DATA
13	bool
14
15# Platforms has a persistent clock
16config ALWAYS_USE_PERSISTENT_CLOCK
17	bool
18	default n
19
20# Timekeeping vsyscall support
21config GENERIC_TIME_VSYSCALL
22	bool
23
24# Timekeeping vsyscall support
25config GENERIC_TIME_VSYSCALL_OLD
26	bool
27
28# ktime_t scalar 64bit nsec representation
29config KTIME_SCALAR
30	bool
31
32# Old style timekeeping
33config ARCH_USES_GETTIMEOFFSET
34	bool
35
36# The generic clock events infrastructure
37config GENERIC_CLOCKEVENTS
38	bool
39
40# Migration helper. Builds, but does not invoke
41config GENERIC_CLOCKEVENTS_BUILD
42	bool
43	default y
44	depends on GENERIC_CLOCKEVENTS
45
46# Architecture can handle broadcast in a driver-agnostic way
47config ARCH_HAS_TICK_BROADCAST
48	bool
49
50# Clockevents broadcasting infrastructure
51config GENERIC_CLOCKEVENTS_BROADCAST
52	bool
53	depends on GENERIC_CLOCKEVENTS
54
55# Automatically adjust the min. reprogramming time for
56# clock event device
57config GENERIC_CLOCKEVENTS_MIN_ADJUST
58	bool
59
60# Generic update of CMOS clock
61config GENERIC_CMOS_UPDATE
62	bool
63
64if GENERIC_CLOCKEVENTS
65menu "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.
70config TICK_ONESHOT
71	bool
72
73config NO_HZ_COMMON
74	bool
75	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
76	select TICK_ONESHOT
77
78choice
79	prompt "Timer tick handling"
80	default NO_HZ_IDLE if NO_HZ
81
82config 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
88config 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
99config 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
130endchoice
131
132config 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
142config 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
150config 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
159endmenu
160endif
161