xref: /openbmc/linux/kernel/time/Kconfig (revision c58b0df1)
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
1505ad717cSFeng Tang# Platforms has a persistent clock
166f16eebeSJohn Stultzconfig ALWAYS_USE_PERSISTENT_CLOCK
1705ad717cSFeng Tang	bool
1805ad717cSFeng Tang	default n
1905ad717cSFeng Tang
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# ktime_t scalar 64bit nsec representation
29b5e498adSThomas Gleixnerconfig KTIME_SCALAR
30b5e498adSThomas Gleixner	bool
31b5e498adSThomas Gleixner
32b5e498adSThomas Gleixner# Old style timekeeping
33b5e498adSThomas Gleixnerconfig ARCH_USES_GETTIMEOFFSET
34b5e498adSThomas Gleixner	bool
35b5e498adSThomas Gleixner
36b5e498adSThomas Gleixner# The generic clock events infrastructure
37b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS
38b5e498adSThomas Gleixner	bool
39b5e498adSThomas Gleixner
40764e0da1SThomas Gleixner# Migration helper. Builds, but does not invoke
41764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BUILD
42764e0da1SThomas Gleixner	bool
43764e0da1SThomas Gleixner	default y
44764e0da1SThomas Gleixner	depends on GENERIC_CLOCKEVENTS
45764e0da1SThomas Gleixner
4612ad1000SMark Rutland# Architecture can handle broadcast in a driver-agnostic way
4712ad1000SMark Rutlandconfig ARCH_HAS_TICK_BROADCAST
4812ad1000SMark Rutland	bool
4912ad1000SMark Rutland
50b5e498adSThomas Gleixner# Clockevents broadcasting infrastructure
51b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BROADCAST
52b5e498adSThomas Gleixner	bool
53b5e498adSThomas Gleixner	depends on GENERIC_CLOCKEVENTS
54b5e498adSThomas Gleixner
55764e0da1SThomas Gleixner# Automatically adjust the min. reprogramming time for
56764e0da1SThomas Gleixner# clock event device
57764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_MIN_ADJUST
58764e0da1SThomas Gleixner	bool
59764e0da1SThomas Gleixner
60b5e498adSThomas Gleixner# Generic update of CMOS clock
61b5e498adSThomas Gleixnerconfig GENERIC_CMOS_UPDATE
62b5e498adSThomas Gleixner	bool
63764e0da1SThomas Gleixner
64764e0da1SThomas Gleixnerif GENERIC_CLOCKEVENTS
65764e0da1SThomas Gleixnermenu "Timers subsystem"
66764e0da1SThomas Gleixner
673451d024SFrederic Weisbecker# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
68764e0da1SThomas Gleixner# only related to the tick functionality. Oneshot clockevent devices
69764e0da1SThomas Gleixner# are supported independ of this.
70764e0da1SThomas Gleixnerconfig TICK_ONESHOT
71764e0da1SThomas Gleixner	bool
72764e0da1SThomas Gleixner
733451d024SFrederic Weisbeckerconfig NO_HZ_COMMON
743451d024SFrederic Weisbecker	bool
753451d024SFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
763451d024SFrederic Weisbecker	select TICK_ONESHOT
773451d024SFrederic Weisbecker
783ca277e4SFrederic Weisbeckerchoice
793ca277e4SFrederic Weisbecker	prompt "Timer tick handling"
803ca277e4SFrederic Weisbecker	default NO_HZ_IDLE if NO_HZ
813ca277e4SFrederic Weisbecker
825b533f4fSFrederic Weisbeckerconfig HZ_PERIODIC
833ca277e4SFrederic Weisbecker	bool "Periodic timer ticks (constant rate, no dynticks)"
843ca277e4SFrederic Weisbecker	help
853ca277e4SFrederic Weisbecker	  This option keeps the tick running periodically at a constant
863ca277e4SFrederic Weisbecker	  rate, even when the CPU doesn't need it.
873ca277e4SFrederic Weisbecker
883ca277e4SFrederic Weisbeckerconfig NO_HZ_IDLE
893ca277e4SFrederic Weisbecker	bool "Idle dynticks system (tickless idle)"
90764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
913451d024SFrederic Weisbecker	select NO_HZ_COMMON
92764e0da1SThomas Gleixner	help
933ca277e4SFrederic Weisbecker	  This option enables a tickless idle system: timer interrupts
943ca277e4SFrederic Weisbecker	  will only trigger on an as-needed basis when the system is idle.
953ca277e4SFrederic Weisbecker	  This is usually interesting for energy saving.
963ca277e4SFrederic Weisbecker
973ca277e4SFrederic Weisbecker	  Most of the time you want to say Y here.
98764e0da1SThomas Gleixner
99c5bfece2SFrederic Weisbeckerconfig NO_HZ_FULL
100fae30dd6SFrederic Weisbecker	bool "Full dynticks system (tickless)"
1013451d024SFrederic Weisbecker	# NO_HZ_COMMON dependency
102ab71d36dSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
103fae30dd6SFrederic Weisbecker	# We need at least one periodic CPU for timekeeping
104fae30dd6SFrederic Weisbecker	depends on SMP
105fae30dd6SFrederic Weisbecker	# RCU_USER_QS dependency
106fae30dd6SFrederic Weisbecker	depends on HAVE_CONTEXT_TRACKING
107c58b0df1SFrederic Weisbecker	# VIRT_CPU_ACCOUNTING_GEN dependency
108c58b0df1SFrederic Weisbecker	depends on 64BIT
1093451d024SFrederic Weisbecker	select NO_HZ_COMMON
110ab71d36dSFrederic Weisbecker	select RCU_USER_QS
111ab71d36dSFrederic Weisbecker	select RCU_NOCB_CPU
1120637e029SFrederic Weisbecker	select RCU_NOCB_CPU_ALL
113c58b0df1SFrederic Weisbecker	select VIRT_CPU_ACCOUNTING_GEN
114a831881bSFrederic Weisbecker	select CONTEXT_TRACKING_FORCE
11576c24fb0SFrederic Weisbecker	select IRQ_WORK
116a831881bSFrederic Weisbecker	help
117a831881bSFrederic Weisbecker	 Adaptively try to shutdown the tick whenever possible, even when
118a831881bSFrederic Weisbecker	 the CPU is running tasks. Typically this requires running a single
119a831881bSFrederic Weisbecker	 task on the CPU. Chances for running tickless are maximized when
120a831881bSFrederic Weisbecker	 the task mostly runs in userspace and has few kernel activity.
121a831881bSFrederic Weisbecker
122c5bfece2SFrederic Weisbecker	 You need to fill up the nohz_full boot parameter with the
123a831881bSFrederic Weisbecker	 desired range of dynticks CPUs.
124a831881bSFrederic Weisbecker
125a831881bSFrederic Weisbecker	 This is implemented at the expense of some overhead in user <-> kernel
126a831881bSFrederic Weisbecker	 transitions: syscalls, exceptions and interrupts. Even when it's
127a831881bSFrederic Weisbecker	 dynamically off.
128a831881bSFrederic Weisbecker
129a831881bSFrederic Weisbecker	 Say N.
130a831881bSFrederic Weisbecker
1313ca277e4SFrederic Weisbeckerendchoice
1323ca277e4SFrederic Weisbecker
133f98823acSFrederic Weisbeckerconfig NO_HZ_FULL_ALL
134f98823acSFrederic Weisbecker       bool "Full dynticks system on all CPUs by default"
135f98823acSFrederic Weisbecker       depends on NO_HZ_FULL
136f98823acSFrederic Weisbecker       help
137f98823acSFrederic Weisbecker         If the user doesn't pass the nohz_full boot option to
138f98823acSFrederic Weisbecker	 define the range of full dynticks CPUs, consider that all
139f98823acSFrederic Weisbecker	 CPUs in the system are full dynticks by default.
140f98823acSFrederic Weisbecker	 Note the boot CPU will still be kept outside the range to
141f98823acSFrederic Weisbecker	 handle the timekeeping duty.
142f98823acSFrederic Weisbecker
1430644ca5cSFrederic Weisbeckerconfig NO_HZ
1440644ca5cSFrederic Weisbecker	bool "Old Idle dynticks config"
1450644ca5cSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
1460644ca5cSFrederic Weisbecker	help
1470644ca5cSFrederic Weisbecker	  This is the old config entry that enables dynticks idle.
1480644ca5cSFrederic Weisbecker	  We keep it around for a little while to enforce backward
1490644ca5cSFrederic Weisbecker	  compatibility with older config files.
1500644ca5cSFrederic Weisbecker
151764e0da1SThomas Gleixnerconfig HIGH_RES_TIMERS
152764e0da1SThomas Gleixner	bool "High Resolution Timer Support"
153764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
154764e0da1SThomas Gleixner	select TICK_ONESHOT
155764e0da1SThomas Gleixner	help
156764e0da1SThomas Gleixner	  This option enables high resolution timer support. If your
157764e0da1SThomas Gleixner	  hardware is not capable then this option only increases
158764e0da1SThomas Gleixner	  the size of the kernel image.
159764e0da1SThomas Gleixner
160764e0da1SThomas Gleixnerendmenu
161764e0da1SThomas Gleixnerendif
162