xref: /openbmc/linux/kernel/time/Kconfig (revision ec8f24b7)
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# Old style timekeeping
30b5e498adSThomas Gleixnerconfig ARCH_USES_GETTIMEOFFSET
31b5e498adSThomas Gleixner	bool
32b5e498adSThomas Gleixner
33b5e498adSThomas Gleixner# The generic clock events infrastructure
34b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS
35b5e498adSThomas Gleixner	bool
36b5e498adSThomas Gleixner
3712ad1000SMark Rutland# Architecture can handle broadcast in a driver-agnostic way
3812ad1000SMark Rutlandconfig ARCH_HAS_TICK_BROADCAST
3912ad1000SMark Rutland	bool
4012ad1000SMark Rutland
41b5e498adSThomas Gleixner# Clockevents broadcasting infrastructure
42b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BROADCAST
43b5e498adSThomas Gleixner	bool
44b5e498adSThomas Gleixner	depends on GENERIC_CLOCKEVENTS
45b5e498adSThomas Gleixner
46764e0da1SThomas Gleixner# Automatically adjust the min. reprogramming time for
47764e0da1SThomas Gleixner# clock event device
48764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_MIN_ADJUST
49764e0da1SThomas Gleixner	bool
50764e0da1SThomas Gleixner
51b5e498adSThomas Gleixner# Generic update of CMOS clock
52b5e498adSThomas Gleixnerconfig GENERIC_CMOS_UPDATE
53b5e498adSThomas Gleixner	bool
54764e0da1SThomas Gleixner
55764e0da1SThomas Gleixnerif GENERIC_CLOCKEVENTS
56764e0da1SThomas Gleixnermenu "Timers subsystem"
57764e0da1SThomas Gleixner
583451d024SFrederic Weisbecker# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
59764e0da1SThomas Gleixner# only related to the tick functionality. Oneshot clockevent devices
606082a6e4SRandy Dunlap# are supported independent of this.
61764e0da1SThomas Gleixnerconfig TICK_ONESHOT
62764e0da1SThomas Gleixner	bool
63764e0da1SThomas Gleixner
643451d024SFrederic Weisbeckerconfig NO_HZ_COMMON
653451d024SFrederic Weisbecker	bool
663451d024SFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
673451d024SFrederic Weisbecker	select TICK_ONESHOT
683451d024SFrederic Weisbecker
693ca277e4SFrederic Weisbeckerchoice
703ca277e4SFrederic Weisbecker	prompt "Timer tick handling"
713ca277e4SFrederic Weisbecker	default NO_HZ_IDLE if NO_HZ
723ca277e4SFrederic Weisbecker
735b533f4fSFrederic Weisbeckerconfig HZ_PERIODIC
743ca277e4SFrederic Weisbecker	bool "Periodic timer ticks (constant rate, no dynticks)"
753ca277e4SFrederic Weisbecker	help
763ca277e4SFrederic Weisbecker	  This option keeps the tick running periodically at a constant
773ca277e4SFrederic Weisbecker	  rate, even when the CPU doesn't need it.
783ca277e4SFrederic Weisbecker
793ca277e4SFrederic Weisbeckerconfig NO_HZ_IDLE
803ca277e4SFrederic Weisbecker	bool "Idle dynticks system (tickless idle)"
81764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
823451d024SFrederic Weisbecker	select NO_HZ_COMMON
83764e0da1SThomas Gleixner	help
843ca277e4SFrederic Weisbecker	  This option enables a tickless idle system: timer interrupts
853ca277e4SFrederic Weisbecker	  will only trigger on an as-needed basis when the system is idle.
863ca277e4SFrederic Weisbecker	  This is usually interesting for energy saving.
873ca277e4SFrederic Weisbecker
883ca277e4SFrederic Weisbecker	  Most of the time you want to say Y here.
89764e0da1SThomas Gleixner
90c5bfece2SFrederic Weisbeckerconfig NO_HZ_FULL
91fae30dd6SFrederic Weisbecker	bool "Full dynticks system (tickless)"
923451d024SFrederic Weisbecker	# NO_HZ_COMMON dependency
93ab71d36dSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
94fae30dd6SFrederic Weisbecker	# We need at least one periodic CPU for timekeeping
95fae30dd6SFrederic Weisbecker	depends on SMP
96fae30dd6SFrederic Weisbecker	depends on HAVE_CONTEXT_TRACKING
97c58b0df1SFrederic Weisbecker	# VIRT_CPU_ACCOUNTING_GEN dependency
98554b0004SKevin Hilman	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
993451d024SFrederic Weisbecker	select NO_HZ_COMMON
100ab71d36dSFrederic Weisbecker	select RCU_NOCB_CPU
101c58b0df1SFrederic Weisbecker	select VIRT_CPU_ACCOUNTING_GEN
10276c24fb0SFrederic Weisbecker	select IRQ_WORK
103bf29cb23SPaul E. McKenney	select CPU_ISOLATION
104a831881bSFrederic Weisbecker	help
105a831881bSFrederic Weisbecker	 Adaptively try to shutdown the tick whenever possible, even when
106a831881bSFrederic Weisbecker	 the CPU is running tasks. Typically this requires running a single
107a831881bSFrederic Weisbecker	 task on the CPU. Chances for running tickless are maximized when
108a831881bSFrederic Weisbecker	 the task mostly runs in userspace and has few kernel activity.
109a831881bSFrederic Weisbecker
110c5bfece2SFrederic Weisbecker	 You need to fill up the nohz_full boot parameter with the
111a831881bSFrederic Weisbecker	 desired range of dynticks CPUs.
112a831881bSFrederic Weisbecker
113a831881bSFrederic Weisbecker	 This is implemented at the expense of some overhead in user <-> kernel
114a831881bSFrederic Weisbecker	 transitions: syscalls, exceptions and interrupts. Even when it's
115a831881bSFrederic Weisbecker	 dynamically off.
116a831881bSFrederic Weisbecker
117a831881bSFrederic Weisbecker	 Say N.
118a831881bSFrederic Weisbecker
1193ca277e4SFrederic Weisbeckerendchoice
1203ca277e4SFrederic Weisbecker
121a4cffdadSPaul E. McKenneyconfig CONTEXT_TRACKING
122a4cffdadSPaul E. McKenney       bool
123a4cffdadSPaul E. McKenney
124a4cffdadSPaul E. McKenneyconfig CONTEXT_TRACKING_FORCE
125a4cffdadSPaul E. McKenney	bool "Force context tracking"
126a4cffdadSPaul E. McKenney	depends on CONTEXT_TRACKING
127a4cffdadSPaul E. McKenney	default y if !NO_HZ_FULL
128a4cffdadSPaul E. McKenney	help
129a4cffdadSPaul E. McKenney	  The major pre-requirement for full dynticks to work is to
130a4cffdadSPaul E. McKenney	  support the context tracking subsystem. But there are also
131a4cffdadSPaul E. McKenney	  other dependencies to provide in order to make the full
132a4cffdadSPaul E. McKenney	  dynticks working.
133a4cffdadSPaul E. McKenney
134a4cffdadSPaul E. McKenney	  This option stands for testing when an arch implements the
135a4cffdadSPaul E. McKenney	  context tracking backend but doesn't yet fullfill all the
136a4cffdadSPaul E. McKenney	  requirements to make the full dynticks feature working.
137a4cffdadSPaul E. McKenney	  Without the full dynticks, there is no way to test the support
138a4cffdadSPaul E. McKenney	  for context tracking and the subsystems that rely on it: RCU
139a4cffdadSPaul E. McKenney	  userspace extended quiescent state and tickless cputime
140a4cffdadSPaul E. McKenney	  accounting. This option copes with the absence of the full
141a4cffdadSPaul E. McKenney	  dynticks subsystem by forcing the context tracking on all
142a4cffdadSPaul E. McKenney	  CPUs in the system.
143a4cffdadSPaul E. McKenney
144a4cffdadSPaul E. McKenney	  Say Y only if you're working on the development of an
145a4cffdadSPaul E. McKenney	  architecture backend for the context tracking.
146a4cffdadSPaul E. McKenney
147a4cffdadSPaul E. McKenney	  Say N otherwise, this option brings an overhead that you
148a4cffdadSPaul E. McKenney	  don't want in production.
149a4cffdadSPaul E. McKenney
1500644ca5cSFrederic Weisbeckerconfig NO_HZ
1510644ca5cSFrederic Weisbecker	bool "Old Idle dynticks config"
1520644ca5cSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
1530644ca5cSFrederic Weisbecker	help
1540644ca5cSFrederic Weisbecker	  This is the old config entry that enables dynticks idle.
1550644ca5cSFrederic Weisbecker	  We keep it around for a little while to enforce backward
1560644ca5cSFrederic Weisbecker	  compatibility with older config files.
1570644ca5cSFrederic Weisbecker
158764e0da1SThomas Gleixnerconfig HIGH_RES_TIMERS
159764e0da1SThomas Gleixner	bool "High Resolution Timer Support"
160764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
161764e0da1SThomas Gleixner	select TICK_ONESHOT
162764e0da1SThomas Gleixner	help
163764e0da1SThomas Gleixner	  This option enables high resolution timer support. If your
164764e0da1SThomas Gleixner	  hardware is not capable then this option only increases
165764e0da1SThomas Gleixner	  the size of the kernel image.
166764e0da1SThomas Gleixner
167764e0da1SThomas Gleixnerendmenu
168764e0da1SThomas Gleixnerendif
169