xref: /openbmc/linux/kernel/time/Kconfig (revision 27601055)
1ec8f24b7SThomas Gleixner# SPDX-License-Identifier: GPL-2.0-only
279bf2bb3SThomas Gleixner#
379bf2bb3SThomas Gleixner# Timer subsystem related configuration options
479bf2bb3SThomas Gleixner#
53872c48bSThomas Gleixner
6b5e498adSThomas Gleixner# Options selectable by arch Kconfig
7b5e498adSThomas Gleixner
8b5e498adSThomas Gleixner# Watchdog function for clocksources to detect instabilities
9b5e498adSThomas Gleixnerconfig CLOCKSOURCE_WATCHDOG
10b5e498adSThomas Gleixner	bool
11b5e498adSThomas Gleixner
12b5e498adSThomas Gleixner# Architecture has extra clocksource data
13b5e498adSThomas Gleixnerconfig ARCH_CLOCKSOURCE_DATA
14b5e498adSThomas Gleixner	bool
15b5e498adSThomas Gleixner
16d67f34c1SThomas Gleixner# Architecture has extra clocksource init called from registration
17d67f34c1SThomas Gleixnerconfig ARCH_CLOCKSOURCE_INIT
18d67f34c1SThomas Gleixner	bool
19d67f34c1SThomas Gleixner
2009ec5442SThomas Gleixner# Clocksources require validation of the clocksource against the last
2109ec5442SThomas Gleixner# cycle update - x86/TSC misfeature
2209ec5442SThomas Gleixnerconfig CLOCKSOURCE_VALIDATE_LAST_CYCLE
2309ec5442SThomas Gleixner	bool
2409ec5442SThomas Gleixner
25b5e498adSThomas Gleixner# Timekeeping vsyscall support
26576094b7SJohn Stultzconfig GENERIC_TIME_VSYSCALL
27576094b7SJohn Stultz	bool
28576094b7SJohn Stultz
29b5e498adSThomas Gleixner# The generic clock events infrastructure
30b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS
310774a6edSArnd Bergmann	def_bool !LEGACY_TIMER_TICK
32b5e498adSThomas Gleixner
3312ad1000SMark Rutland# Architecture can handle broadcast in a driver-agnostic way
3412ad1000SMark Rutlandconfig ARCH_HAS_TICK_BROADCAST
3512ad1000SMark Rutland	bool
3612ad1000SMark Rutland
37b5e498adSThomas Gleixner# Clockevents broadcasting infrastructure
38b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BROADCAST
39b5e498adSThomas Gleixner	bool
40b5e498adSThomas Gleixner	depends on GENERIC_CLOCKEVENTS
41b5e498adSThomas Gleixner
42764e0da1SThomas Gleixner# Automatically adjust the min. reprogramming time for
43764e0da1SThomas Gleixner# clock event device
44764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_MIN_ADJUST
45764e0da1SThomas Gleixner	bool
46764e0da1SThomas Gleixner
47b5e498adSThomas Gleixner# Generic update of CMOS clock
48b5e498adSThomas Gleixnerconfig GENERIC_CMOS_UPDATE
49b5e498adSThomas Gleixner	bool
50764e0da1SThomas Gleixner
511fb497ddSThomas Gleixner# Select to handle posix CPU timers from task_work
521fb497ddSThomas Gleixner# and not from the timer interrupt context
531fb497ddSThomas Gleixnerconfig HAVE_POSIX_CPU_TIMERS_TASK_WORK
541fb497ddSThomas Gleixner	bool
551fb497ddSThomas Gleixner
561fb497ddSThomas Gleixnerconfig POSIX_CPU_TIMERS_TASK_WORK
571fb497ddSThomas Gleixner	bool
581fb497ddSThomas Gleixner	default y if POSIX_TIMERS && HAVE_POSIX_CPU_TIMERS_TASK_WORK
591fb497ddSThomas Gleixner
60b3550164SArnd Bergmannconfig LEGACY_TIMER_TICK
61b3550164SArnd Bergmann	bool
62b3550164SArnd Bergmann	help
63b3550164SArnd Bergmann	  The legacy timer tick helper is used by platforms that
64b3550164SArnd Bergmann	  lack support for the generic clockevent framework.
65b3550164SArnd Bergmann	  New platforms should use generic clockevents instead.
66b3550164SArnd Bergmann
67*27601055SCassio Nericonfig TIME_KUNIT_TEST
68*27601055SCassio Neri	tristate "KUnit test for kernel/time functions" if !KUNIT_ALL_TESTS
69*27601055SCassio Neri	depends on KUNIT
70*27601055SCassio Neri	default KUNIT_ALL_TESTS
71*27601055SCassio Neri	help
72*27601055SCassio Neri	  Enable this option to test RTC library functions.
73*27601055SCassio Neri
74*27601055SCassio Neri	  If unsure, say N.
75*27601055SCassio Neri
76764e0da1SThomas Gleixnerif GENERIC_CLOCKEVENTS
77764e0da1SThomas Gleixnermenu "Timers subsystem"
78764e0da1SThomas Gleixner
793451d024SFrederic Weisbecker# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
80764e0da1SThomas Gleixner# only related to the tick functionality. Oneshot clockevent devices
816082a6e4SRandy Dunlap# are supported independent of this.
82764e0da1SThomas Gleixnerconfig TICK_ONESHOT
83764e0da1SThomas Gleixner	bool
84764e0da1SThomas Gleixner
853451d024SFrederic Weisbeckerconfig NO_HZ_COMMON
863451d024SFrederic Weisbecker	bool
873451d024SFrederic Weisbecker	select TICK_ONESHOT
883451d024SFrederic Weisbecker
893ca277e4SFrederic Weisbeckerchoice
903ca277e4SFrederic Weisbecker	prompt "Timer tick handling"
913ca277e4SFrederic Weisbecker	default NO_HZ_IDLE if NO_HZ
923ca277e4SFrederic Weisbecker
935b533f4fSFrederic Weisbeckerconfig HZ_PERIODIC
943ca277e4SFrederic Weisbecker	bool "Periodic timer ticks (constant rate, no dynticks)"
953ca277e4SFrederic Weisbecker	help
963ca277e4SFrederic Weisbecker	  This option keeps the tick running periodically at a constant
973ca277e4SFrederic Weisbecker	  rate, even when the CPU doesn't need it.
983ca277e4SFrederic Weisbecker
993ca277e4SFrederic Weisbeckerconfig NO_HZ_IDLE
1003ca277e4SFrederic Weisbecker	bool "Idle dynticks system (tickless idle)"
1013451d024SFrederic Weisbecker	select NO_HZ_COMMON
102764e0da1SThomas Gleixner	help
1033ca277e4SFrederic Weisbecker	  This option enables a tickless idle system: timer interrupts
1043ca277e4SFrederic Weisbecker	  will only trigger on an as-needed basis when the system is idle.
1053ca277e4SFrederic Weisbecker	  This is usually interesting for energy saving.
1063ca277e4SFrederic Weisbecker
1073ca277e4SFrederic Weisbecker	  Most of the time you want to say Y here.
108764e0da1SThomas Gleixner
109c5bfece2SFrederic Weisbeckerconfig NO_HZ_FULL
110fae30dd6SFrederic Weisbecker	bool "Full dynticks system (tickless)"
1113451d024SFrederic Weisbecker	# NO_HZ_COMMON dependency
112fae30dd6SFrederic Weisbecker	# We need at least one periodic CPU for timekeeping
113fae30dd6SFrederic Weisbecker	depends on SMP
114fae30dd6SFrederic Weisbecker	depends on HAVE_CONTEXT_TRACKING
115c58b0df1SFrederic Weisbecker	# VIRT_CPU_ACCOUNTING_GEN dependency
116554b0004SKevin Hilman	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
1173451d024SFrederic Weisbecker	select NO_HZ_COMMON
118ab71d36dSFrederic Weisbecker	select RCU_NOCB_CPU
119c58b0df1SFrederic Weisbecker	select VIRT_CPU_ACCOUNTING_GEN
12076c24fb0SFrederic Weisbecker	select IRQ_WORK
121bf29cb23SPaul E. McKenney	select CPU_ISOLATION
122a831881bSFrederic Weisbecker	help
123a831881bSFrederic Weisbecker	 Adaptively try to shutdown the tick whenever possible, even when
124a831881bSFrederic Weisbecker	 the CPU is running tasks. Typically this requires running a single
125a831881bSFrederic Weisbecker	 task on the CPU. Chances for running tickless are maximized when
126a831881bSFrederic Weisbecker	 the task mostly runs in userspace and has few kernel activity.
127a831881bSFrederic Weisbecker
128c5bfece2SFrederic Weisbecker	 You need to fill up the nohz_full boot parameter with the
129a831881bSFrederic Weisbecker	 desired range of dynticks CPUs.
130a831881bSFrederic Weisbecker
131a831881bSFrederic Weisbecker	 This is implemented at the expense of some overhead in user <-> kernel
132a831881bSFrederic Weisbecker	 transitions: syscalls, exceptions and interrupts. Even when it's
133a831881bSFrederic Weisbecker	 dynamically off.
134a831881bSFrederic Weisbecker
135a831881bSFrederic Weisbecker	 Say N.
136a831881bSFrederic Weisbecker
1373ca277e4SFrederic Weisbeckerendchoice
1383ca277e4SFrederic Weisbecker
139a4cffdadSPaul E. McKenneyconfig CONTEXT_TRACKING
140a4cffdadSPaul E. McKenney       bool
141a4cffdadSPaul E. McKenney
142a4cffdadSPaul E. McKenneyconfig CONTEXT_TRACKING_FORCE
143a4cffdadSPaul E. McKenney	bool "Force context tracking"
144a4cffdadSPaul E. McKenney	depends on CONTEXT_TRACKING
145a4cffdadSPaul E. McKenney	default y if !NO_HZ_FULL
146a4cffdadSPaul E. McKenney	help
147a4cffdadSPaul E. McKenney	  The major pre-requirement for full dynticks to work is to
148a4cffdadSPaul E. McKenney	  support the context tracking subsystem. But there are also
149a4cffdadSPaul E. McKenney	  other dependencies to provide in order to make the full
150a4cffdadSPaul E. McKenney	  dynticks working.
151a4cffdadSPaul E. McKenney
152a4cffdadSPaul E. McKenney	  This option stands for testing when an arch implements the
153f6f5cd84SColin Ian King	  context tracking backend but doesn't yet fulfill all the
154a4cffdadSPaul E. McKenney	  requirements to make the full dynticks feature working.
155a4cffdadSPaul E. McKenney	  Without the full dynticks, there is no way to test the support
156a4cffdadSPaul E. McKenney	  for context tracking and the subsystems that rely on it: RCU
157a4cffdadSPaul E. McKenney	  userspace extended quiescent state and tickless cputime
158a4cffdadSPaul E. McKenney	  accounting. This option copes with the absence of the full
159a4cffdadSPaul E. McKenney	  dynticks subsystem by forcing the context tracking on all
160a4cffdadSPaul E. McKenney	  CPUs in the system.
161a4cffdadSPaul E. McKenney
162a4cffdadSPaul E. McKenney	  Say Y only if you're working on the development of an
163a4cffdadSPaul E. McKenney	  architecture backend for the context tracking.
164a4cffdadSPaul E. McKenney
165a4cffdadSPaul E. McKenney	  Say N otherwise, this option brings an overhead that you
166a4cffdadSPaul E. McKenney	  don't want in production.
167a4cffdadSPaul E. McKenney
1680644ca5cSFrederic Weisbeckerconfig NO_HZ
1690644ca5cSFrederic Weisbecker	bool "Old Idle dynticks config"
1700644ca5cSFrederic Weisbecker	help
1710644ca5cSFrederic Weisbecker	  This is the old config entry that enables dynticks idle.
1720644ca5cSFrederic Weisbecker	  We keep it around for a little while to enforce backward
1730644ca5cSFrederic Weisbecker	  compatibility with older config files.
1740644ca5cSFrederic Weisbecker
175764e0da1SThomas Gleixnerconfig HIGH_RES_TIMERS
176764e0da1SThomas Gleixner	bool "High Resolution Timer Support"
177764e0da1SThomas Gleixner	select TICK_ONESHOT
178764e0da1SThomas Gleixner	help
179764e0da1SThomas Gleixner	  This option enables high resolution timer support. If your
180764e0da1SThomas Gleixner	  hardware is not capable then this option only increases
181764e0da1SThomas Gleixner	  the size of the kernel image.
182764e0da1SThomas Gleixner
183764e0da1SThomas Gleixnerendmenu
184764e0da1SThomas Gleixnerendif
185