xref: /openbmc/linux/kernel/time/Kconfig (revision 09ec5442)
179bf2bb3SThomas Gleixner#
279bf2bb3SThomas Gleixner# Timer subsystem related configuration options
379bf2bb3SThomas Gleixner#
43872c48bSThomas Gleixner
5b5e498adSThomas Gleixner# Options selectable by arch Kconfig
6b5e498adSThomas Gleixner
7b5e498adSThomas Gleixner# Watchdog function for clocksources to detect instabilities
8b5e498adSThomas Gleixnerconfig CLOCKSOURCE_WATCHDOG
9b5e498adSThomas Gleixner	bool
10b5e498adSThomas Gleixner
11b5e498adSThomas Gleixner# Architecture has extra clocksource data
12b5e498adSThomas Gleixnerconfig ARCH_CLOCKSOURCE_DATA
13b5e498adSThomas Gleixner	bool
14b5e498adSThomas Gleixner
1509ec5442SThomas Gleixner# Clocksources require validation of the clocksource against the last
1609ec5442SThomas Gleixner# cycle update - x86/TSC misfeature
1709ec5442SThomas Gleixnerconfig CLOCKSOURCE_VALIDATE_LAST_CYCLE
1809ec5442SThomas Gleixner	bool
1909ec5442SThomas Gleixner
20b5e498adSThomas Gleixner# Timekeeping vsyscall support
21576094b7SJohn Stultzconfig GENERIC_TIME_VSYSCALL
22576094b7SJohn Stultz	bool
23576094b7SJohn Stultz
24576094b7SJohn Stultz# Timekeeping vsyscall support
2570639421SJohn Stultzconfig GENERIC_TIME_VSYSCALL_OLD
26b5e498adSThomas Gleixner	bool
27b5e498adSThomas Gleixner
28b5e498adSThomas Gleixner# Old style timekeeping
29b5e498adSThomas Gleixnerconfig ARCH_USES_GETTIMEOFFSET
30b5e498adSThomas Gleixner	bool
31b5e498adSThomas Gleixner
32b5e498adSThomas Gleixner# The generic clock events infrastructure
33b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS
34b5e498adSThomas Gleixner	bool
35b5e498adSThomas Gleixner
36764e0da1SThomas Gleixner# Migration helper. Builds, but does not invoke
37764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BUILD
38764e0da1SThomas Gleixner	bool
39764e0da1SThomas Gleixner	default y
40764e0da1SThomas Gleixner	depends on GENERIC_CLOCKEVENTS
41764e0da1SThomas Gleixner
4212ad1000SMark Rutland# Architecture can handle broadcast in a driver-agnostic way
4312ad1000SMark Rutlandconfig ARCH_HAS_TICK_BROADCAST
4412ad1000SMark Rutland	bool
4512ad1000SMark Rutland
46b5e498adSThomas Gleixner# Clockevents broadcasting infrastructure
47b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BROADCAST
48b5e498adSThomas Gleixner	bool
49b5e498adSThomas Gleixner	depends on GENERIC_CLOCKEVENTS
50b5e498adSThomas Gleixner
51764e0da1SThomas Gleixner# Automatically adjust the min. reprogramming time for
52764e0da1SThomas Gleixner# clock event device
53764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_MIN_ADJUST
54764e0da1SThomas Gleixner	bool
55764e0da1SThomas Gleixner
56b5e498adSThomas Gleixner# Generic update of CMOS clock
57b5e498adSThomas Gleixnerconfig GENERIC_CMOS_UPDATE
58b5e498adSThomas Gleixner	bool
59764e0da1SThomas Gleixner
60764e0da1SThomas Gleixnerif GENERIC_CLOCKEVENTS
61764e0da1SThomas Gleixnermenu "Timers subsystem"
62764e0da1SThomas Gleixner
633451d024SFrederic Weisbecker# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
64764e0da1SThomas Gleixner# only related to the tick functionality. Oneshot clockevent devices
65764e0da1SThomas Gleixner# are supported independ of this.
66764e0da1SThomas Gleixnerconfig TICK_ONESHOT
67764e0da1SThomas Gleixner	bool
68764e0da1SThomas Gleixner
693451d024SFrederic Weisbeckerconfig NO_HZ_COMMON
703451d024SFrederic Weisbecker	bool
713451d024SFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
723451d024SFrederic Weisbecker	select TICK_ONESHOT
733451d024SFrederic Weisbecker
743ca277e4SFrederic Weisbeckerchoice
753ca277e4SFrederic Weisbecker	prompt "Timer tick handling"
763ca277e4SFrederic Weisbecker	default NO_HZ_IDLE if NO_HZ
773ca277e4SFrederic Weisbecker
785b533f4fSFrederic Weisbeckerconfig HZ_PERIODIC
793ca277e4SFrederic Weisbecker	bool "Periodic timer ticks (constant rate, no dynticks)"
803ca277e4SFrederic Weisbecker	help
813ca277e4SFrederic Weisbecker	  This option keeps the tick running periodically at a constant
823ca277e4SFrederic Weisbecker	  rate, even when the CPU doesn't need it.
833ca277e4SFrederic Weisbecker
843ca277e4SFrederic Weisbeckerconfig NO_HZ_IDLE
853ca277e4SFrederic Weisbecker	bool "Idle dynticks system (tickless idle)"
86764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
873451d024SFrederic Weisbecker	select NO_HZ_COMMON
88764e0da1SThomas Gleixner	help
893ca277e4SFrederic Weisbecker	  This option enables a tickless idle system: timer interrupts
903ca277e4SFrederic Weisbecker	  will only trigger on an as-needed basis when the system is idle.
913ca277e4SFrederic Weisbecker	  This is usually interesting for energy saving.
923ca277e4SFrederic Weisbecker
933ca277e4SFrederic Weisbecker	  Most of the time you want to say Y here.
94764e0da1SThomas Gleixner
95c5bfece2SFrederic Weisbeckerconfig NO_HZ_FULL
96fae30dd6SFrederic Weisbecker	bool "Full dynticks system (tickless)"
973451d024SFrederic Weisbecker	# NO_HZ_COMMON dependency
98ab71d36dSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
99fae30dd6SFrederic Weisbecker	# We need at least one periodic CPU for timekeeping
100fae30dd6SFrederic Weisbecker	depends on SMP
101fae30dd6SFrederic Weisbecker	# RCU_USER_QS dependency
102fae30dd6SFrederic Weisbecker	depends on HAVE_CONTEXT_TRACKING
103c58b0df1SFrederic Weisbecker	# VIRT_CPU_ACCOUNTING_GEN dependency
104554b0004SKevin Hilman	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
1053451d024SFrederic Weisbecker	select NO_HZ_COMMON
106ab71d36dSFrederic Weisbecker	select RCU_USER_QS
107ab71d36dSFrederic Weisbecker	select RCU_NOCB_CPU
108c58b0df1SFrederic Weisbecker	select VIRT_CPU_ACCOUNTING_GEN
10976c24fb0SFrederic Weisbecker	select IRQ_WORK
110a831881bSFrederic Weisbecker	help
111a831881bSFrederic Weisbecker	 Adaptively try to shutdown the tick whenever possible, even when
112a831881bSFrederic Weisbecker	 the CPU is running tasks. Typically this requires running a single
113a831881bSFrederic Weisbecker	 task on the CPU. Chances for running tickless are maximized when
114a831881bSFrederic Weisbecker	 the task mostly runs in userspace and has few kernel activity.
115a831881bSFrederic Weisbecker
116c5bfece2SFrederic Weisbecker	 You need to fill up the nohz_full boot parameter with the
117a831881bSFrederic Weisbecker	 desired range of dynticks CPUs.
118a831881bSFrederic Weisbecker
119a831881bSFrederic Weisbecker	 This is implemented at the expense of some overhead in user <-> kernel
120a831881bSFrederic Weisbecker	 transitions: syscalls, exceptions and interrupts. Even when it's
121a831881bSFrederic Weisbecker	 dynamically off.
122a831881bSFrederic Weisbecker
123a831881bSFrederic Weisbecker	 Say N.
124a831881bSFrederic Weisbecker
1253ca277e4SFrederic Weisbeckerendchoice
1263ca277e4SFrederic Weisbecker
127f98823acSFrederic Weisbeckerconfig NO_HZ_FULL_ALL
128f96a34e2SPaul Gortmaker       bool "Full dynticks system on all CPUs by default (except CPU 0)"
129f98823acSFrederic Weisbecker       depends on NO_HZ_FULL
130f98823acSFrederic Weisbecker       help
131f98823acSFrederic Weisbecker         If the user doesn't pass the nohz_full boot option to
132f98823acSFrederic Weisbecker	 define the range of full dynticks CPUs, consider that all
133f98823acSFrederic Weisbecker	 CPUs in the system are full dynticks by default.
134f98823acSFrederic Weisbecker	 Note the boot CPU will still be kept outside the range to
135f98823acSFrederic Weisbecker	 handle the timekeeping duty.
136f98823acSFrederic Weisbecker
137b44379afSPaul E. McKenneyconfig NO_HZ_FULL_SYSIDLE
138b44379afSPaul E. McKenney	bool "Detect full-system idle state for full dynticks system"
139b44379afSPaul E. McKenney	depends on NO_HZ_FULL
140b44379afSPaul E. McKenney	default n
141b44379afSPaul E. McKenney	help
142b44379afSPaul E. McKenney	 At least one CPU must keep the scheduling-clock tick running for
143b44379afSPaul E. McKenney	 timekeeping purposes whenever there is a non-idle CPU, where
144b44379afSPaul E. McKenney	 "non-idle" also includes dynticks CPUs as long as they are
145b44379afSPaul E. McKenney	 running non-idle tasks.  Because the underlying adaptive-tick
146b44379afSPaul E. McKenney	 support cannot distinguish between all CPUs being idle and
147b44379afSPaul E. McKenney	 all CPUs each running a single task in dynticks mode, the
148b44379afSPaul E. McKenney	 underlying support simply ensures that there is always a CPU
149b44379afSPaul E. McKenney	 handling the scheduling-clock tick, whether or not all CPUs
150b44379afSPaul E. McKenney	 are idle.  This Kconfig option enables scalable detection of
151b44379afSPaul E. McKenney	 the all-CPUs-idle state, thus allowing the scheduling-clock
152b44379afSPaul E. McKenney	 tick to be disabled when all CPUs are idle.  Note that scalable
153b44379afSPaul E. McKenney	 detection of the all-CPUs-idle state means that larger systems
154b44379afSPaul E. McKenney	 will be slower to declare the all-CPUs-idle state.
155b44379afSPaul E. McKenney
156b44379afSPaul E. McKenney	 Say Y if you would like to help debug all-CPUs-idle detection.
157b44379afSPaul E. McKenney
158b44379afSPaul E. McKenney	 Say N if you are unsure.
159b44379afSPaul E. McKenney
1600edd1b17SPaul E. McKenneyconfig NO_HZ_FULL_SYSIDLE_SMALL
1610edd1b17SPaul E. McKenney	int "Number of CPUs above which large-system approach is used"
1620edd1b17SPaul E. McKenney	depends on NO_HZ_FULL_SYSIDLE
1630edd1b17SPaul E. McKenney	range 1 NR_CPUS
1640edd1b17SPaul E. McKenney	default 8
1650edd1b17SPaul E. McKenney	help
1660edd1b17SPaul E. McKenney	 The full-system idle detection mechanism takes a lazy approach
1670edd1b17SPaul E. McKenney	 on large systems, as is required to attain decent scalability.
1680edd1b17SPaul E. McKenney	 However, on smaller systems, scalability is not anywhere near as
1690edd1b17SPaul E. McKenney	 large a concern as is energy efficiency.  The sysidle subsystem
1700edd1b17SPaul E. McKenney	 therefore uses a fast but non-scalable algorithm for small
1710edd1b17SPaul E. McKenney	 systems and a lazier but scalable algorithm for large systems.
1720edd1b17SPaul E. McKenney	 This Kconfig parameter defines the number of CPUs in the largest
1730edd1b17SPaul E. McKenney	 system that will be considered to be "small".
1740edd1b17SPaul E. McKenney
1750edd1b17SPaul E. McKenney	 The default value will be fine in most cases.	Battery-powered
1760edd1b17SPaul E. McKenney	 systems that (1) enable NO_HZ_FULL_SYSIDLE, (2) have larger
1770edd1b17SPaul E. McKenney	 numbers of CPUs, and (3) are suffering from battery-lifetime
1780edd1b17SPaul E. McKenney	 problems due to long sysidle latencies might wish to experiment
1790edd1b17SPaul E. McKenney	 with larger values for this Kconfig parameter.  On the other
1800edd1b17SPaul E. McKenney	 hand, they might be even better served by disabling NO_HZ_FULL
1810edd1b17SPaul E. McKenney	 entirely, given that NO_HZ_FULL is intended for HPC and
1820edd1b17SPaul E. McKenney	 real-time workloads that at present do not tend to be run on
1830edd1b17SPaul E. McKenney	 battery-powered systems.
1840edd1b17SPaul E. McKenney
1850edd1b17SPaul E. McKenney	 Take the default if you are unsure.
1860edd1b17SPaul E. McKenney
1870644ca5cSFrederic Weisbeckerconfig NO_HZ
1880644ca5cSFrederic Weisbecker	bool "Old Idle dynticks config"
1890644ca5cSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
1900644ca5cSFrederic Weisbecker	help
1910644ca5cSFrederic Weisbecker	  This is the old config entry that enables dynticks idle.
1920644ca5cSFrederic Weisbecker	  We keep it around for a little while to enforce backward
1930644ca5cSFrederic Weisbecker	  compatibility with older config files.
1940644ca5cSFrederic Weisbecker
195764e0da1SThomas Gleixnerconfig HIGH_RES_TIMERS
196764e0da1SThomas Gleixner	bool "High Resolution Timer Support"
197764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
198764e0da1SThomas Gleixner	select TICK_ONESHOT
199764e0da1SThomas Gleixner	help
200764e0da1SThomas Gleixner	  This option enables high resolution timer support. If your
201764e0da1SThomas Gleixner	  hardware is not capable then this option only increases
202764e0da1SThomas Gleixner	  the size of the kernel image.
203764e0da1SThomas Gleixner
204764e0da1SThomas Gleixnerendmenu
205764e0da1SThomas Gleixnerendif
206