xref: /openbmc/linux/kernel/time/Kconfig (revision d67f34c1)
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
15d67f34c1SThomas Gleixner# Architecture has extra clocksource init called from registration
16d67f34c1SThomas Gleixnerconfig ARCH_CLOCKSOURCE_INIT
17d67f34c1SThomas Gleixner	bool
18d67f34c1SThomas Gleixner
1909ec5442SThomas Gleixner# Clocksources require validation of the clocksource against the last
2009ec5442SThomas Gleixner# cycle update - x86/TSC misfeature
2109ec5442SThomas Gleixnerconfig CLOCKSOURCE_VALIDATE_LAST_CYCLE
2209ec5442SThomas Gleixner	bool
2309ec5442SThomas Gleixner
24b5e498adSThomas Gleixner# Timekeeping vsyscall support
25576094b7SJohn Stultzconfig GENERIC_TIME_VSYSCALL
26576094b7SJohn Stultz	bool
27576094b7SJohn Stultz
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
3612ad1000SMark Rutland# Architecture can handle broadcast in a driver-agnostic way
3712ad1000SMark Rutlandconfig ARCH_HAS_TICK_BROADCAST
3812ad1000SMark Rutland	bool
3912ad1000SMark Rutland
40b5e498adSThomas Gleixner# Clockevents broadcasting infrastructure
41b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BROADCAST
42b5e498adSThomas Gleixner	bool
43b5e498adSThomas Gleixner	depends on GENERIC_CLOCKEVENTS
44b5e498adSThomas Gleixner
45764e0da1SThomas Gleixner# Automatically adjust the min. reprogramming time for
46764e0da1SThomas Gleixner# clock event device
47764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_MIN_ADJUST
48764e0da1SThomas Gleixner	bool
49764e0da1SThomas Gleixner
50b5e498adSThomas Gleixner# Generic update of CMOS clock
51b5e498adSThomas Gleixnerconfig GENERIC_CMOS_UPDATE
52b5e498adSThomas Gleixner	bool
53764e0da1SThomas Gleixner
54764e0da1SThomas Gleixnerif GENERIC_CLOCKEVENTS
55764e0da1SThomas Gleixnermenu "Timers subsystem"
56764e0da1SThomas Gleixner
573451d024SFrederic Weisbecker# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
58764e0da1SThomas Gleixner# only related to the tick functionality. Oneshot clockevent devices
596082a6e4SRandy Dunlap# are supported independent of this.
60764e0da1SThomas Gleixnerconfig TICK_ONESHOT
61764e0da1SThomas Gleixner	bool
62764e0da1SThomas Gleixner
633451d024SFrederic Weisbeckerconfig NO_HZ_COMMON
643451d024SFrederic Weisbecker	bool
653451d024SFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
663451d024SFrederic Weisbecker	select TICK_ONESHOT
673451d024SFrederic Weisbecker
683ca277e4SFrederic Weisbeckerchoice
693ca277e4SFrederic Weisbecker	prompt "Timer tick handling"
703ca277e4SFrederic Weisbecker	default NO_HZ_IDLE if NO_HZ
713ca277e4SFrederic Weisbecker
725b533f4fSFrederic Weisbeckerconfig HZ_PERIODIC
733ca277e4SFrederic Weisbecker	bool "Periodic timer ticks (constant rate, no dynticks)"
743ca277e4SFrederic Weisbecker	help
753ca277e4SFrederic Weisbecker	  This option keeps the tick running periodically at a constant
763ca277e4SFrederic Weisbecker	  rate, even when the CPU doesn't need it.
773ca277e4SFrederic Weisbecker
783ca277e4SFrederic Weisbeckerconfig NO_HZ_IDLE
793ca277e4SFrederic Weisbecker	bool "Idle dynticks system (tickless idle)"
80764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
813451d024SFrederic Weisbecker	select NO_HZ_COMMON
82764e0da1SThomas Gleixner	help
833ca277e4SFrederic Weisbecker	  This option enables a tickless idle system: timer interrupts
843ca277e4SFrederic Weisbecker	  will only trigger on an as-needed basis when the system is idle.
853ca277e4SFrederic Weisbecker	  This is usually interesting for energy saving.
863ca277e4SFrederic Weisbecker
873ca277e4SFrederic Weisbecker	  Most of the time you want to say Y here.
88764e0da1SThomas Gleixner
89c5bfece2SFrederic Weisbeckerconfig NO_HZ_FULL
90fae30dd6SFrederic Weisbecker	bool "Full dynticks system (tickless)"
913451d024SFrederic Weisbecker	# NO_HZ_COMMON dependency
92ab71d36dSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
93fae30dd6SFrederic Weisbecker	# We need at least one periodic CPU for timekeeping
94fae30dd6SFrederic Weisbecker	depends on SMP
95fae30dd6SFrederic Weisbecker	depends on HAVE_CONTEXT_TRACKING
96c58b0df1SFrederic Weisbecker	# VIRT_CPU_ACCOUNTING_GEN dependency
97554b0004SKevin Hilman	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
983451d024SFrederic Weisbecker	select NO_HZ_COMMON
99ab71d36dSFrederic Weisbecker	select RCU_NOCB_CPU
100c58b0df1SFrederic Weisbecker	select VIRT_CPU_ACCOUNTING_GEN
10176c24fb0SFrederic Weisbecker	select IRQ_WORK
102bf29cb23SPaul E. McKenney	select CPU_ISOLATION
103a831881bSFrederic Weisbecker	help
104a831881bSFrederic Weisbecker	 Adaptively try to shutdown the tick whenever possible, even when
105a831881bSFrederic Weisbecker	 the CPU is running tasks. Typically this requires running a single
106a831881bSFrederic Weisbecker	 task on the CPU. Chances for running tickless are maximized when
107a831881bSFrederic Weisbecker	 the task mostly runs in userspace and has few kernel activity.
108a831881bSFrederic Weisbecker
109c5bfece2SFrederic Weisbecker	 You need to fill up the nohz_full boot parameter with the
110a831881bSFrederic Weisbecker	 desired range of dynticks CPUs.
111a831881bSFrederic Weisbecker
112a831881bSFrederic Weisbecker	 This is implemented at the expense of some overhead in user <-> kernel
113a831881bSFrederic Weisbecker	 transitions: syscalls, exceptions and interrupts. Even when it's
114a831881bSFrederic Weisbecker	 dynamically off.
115a831881bSFrederic Weisbecker
116a831881bSFrederic Weisbecker	 Say N.
117a831881bSFrederic Weisbecker
1183ca277e4SFrederic Weisbeckerendchoice
1193ca277e4SFrederic Weisbecker
1200644ca5cSFrederic Weisbeckerconfig NO_HZ
1210644ca5cSFrederic Weisbecker	bool "Old Idle dynticks config"
1220644ca5cSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
1230644ca5cSFrederic Weisbecker	help
1240644ca5cSFrederic Weisbecker	  This is the old config entry that enables dynticks idle.
1250644ca5cSFrederic Weisbecker	  We keep it around for a little while to enforce backward
1260644ca5cSFrederic Weisbecker	  compatibility with older config files.
1270644ca5cSFrederic Weisbecker
128764e0da1SThomas Gleixnerconfig HIGH_RES_TIMERS
129764e0da1SThomas Gleixner	bool "High Resolution Timer Support"
130764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
131764e0da1SThomas Gleixner	select TICK_ONESHOT
132764e0da1SThomas Gleixner	help
133764e0da1SThomas Gleixner	  This option enables high resolution timer support. If your
134764e0da1SThomas Gleixner	  hardware is not capable then this option only increases
135764e0da1SThomas Gleixner	  the size of the kernel image.
136764e0da1SThomas Gleixner
137764e0da1SThomas Gleixnerendmenu
138764e0da1SThomas Gleixnerendif
139