xref: /openbmc/linux/kernel/time/Kconfig (revision bf29cb23)
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
24b5e498adSThomas Gleixner# Old style timekeeping
25b5e498adSThomas Gleixnerconfig ARCH_USES_GETTIMEOFFSET
26b5e498adSThomas Gleixner	bool
27b5e498adSThomas Gleixner
28b5e498adSThomas Gleixner# The generic clock events infrastructure
29b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS
30b5e498adSThomas Gleixner	bool
31b5e498adSThomas Gleixner
3212ad1000SMark Rutland# Architecture can handle broadcast in a driver-agnostic way
3312ad1000SMark Rutlandconfig ARCH_HAS_TICK_BROADCAST
3412ad1000SMark Rutland	bool
3512ad1000SMark Rutland
36b5e498adSThomas Gleixner# Clockevents broadcasting infrastructure
37b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BROADCAST
38b5e498adSThomas Gleixner	bool
39b5e498adSThomas Gleixner	depends on GENERIC_CLOCKEVENTS
40b5e498adSThomas Gleixner
41764e0da1SThomas Gleixner# Automatically adjust the min. reprogramming time for
42764e0da1SThomas Gleixner# clock event device
43764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_MIN_ADJUST
44764e0da1SThomas Gleixner	bool
45764e0da1SThomas Gleixner
46b5e498adSThomas Gleixner# Generic update of CMOS clock
47b5e498adSThomas Gleixnerconfig GENERIC_CMOS_UPDATE
48b5e498adSThomas Gleixner	bool
49764e0da1SThomas Gleixner
50764e0da1SThomas Gleixnerif GENERIC_CLOCKEVENTS
51764e0da1SThomas Gleixnermenu "Timers subsystem"
52764e0da1SThomas Gleixner
533451d024SFrederic Weisbecker# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
54764e0da1SThomas Gleixner# only related to the tick functionality. Oneshot clockevent devices
556082a6e4SRandy Dunlap# are supported independent of this.
56764e0da1SThomas Gleixnerconfig TICK_ONESHOT
57764e0da1SThomas Gleixner	bool
58764e0da1SThomas Gleixner
593451d024SFrederic Weisbeckerconfig NO_HZ_COMMON
603451d024SFrederic Weisbecker	bool
613451d024SFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
623451d024SFrederic Weisbecker	select TICK_ONESHOT
633451d024SFrederic Weisbecker
643ca277e4SFrederic Weisbeckerchoice
653ca277e4SFrederic Weisbecker	prompt "Timer tick handling"
663ca277e4SFrederic Weisbecker	default NO_HZ_IDLE if NO_HZ
673ca277e4SFrederic Weisbecker
685b533f4fSFrederic Weisbeckerconfig HZ_PERIODIC
693ca277e4SFrederic Weisbecker	bool "Periodic timer ticks (constant rate, no dynticks)"
703ca277e4SFrederic Weisbecker	help
713ca277e4SFrederic Weisbecker	  This option keeps the tick running periodically at a constant
723ca277e4SFrederic Weisbecker	  rate, even when the CPU doesn't need it.
733ca277e4SFrederic Weisbecker
743ca277e4SFrederic Weisbeckerconfig NO_HZ_IDLE
753ca277e4SFrederic Weisbecker	bool "Idle dynticks system (tickless idle)"
76764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
773451d024SFrederic Weisbecker	select NO_HZ_COMMON
78764e0da1SThomas Gleixner	help
793ca277e4SFrederic Weisbecker	  This option enables a tickless idle system: timer interrupts
803ca277e4SFrederic Weisbecker	  will only trigger on an as-needed basis when the system is idle.
813ca277e4SFrederic Weisbecker	  This is usually interesting for energy saving.
823ca277e4SFrederic Weisbecker
833ca277e4SFrederic Weisbecker	  Most of the time you want to say Y here.
84764e0da1SThomas Gleixner
85c5bfece2SFrederic Weisbeckerconfig NO_HZ_FULL
86fae30dd6SFrederic Weisbecker	bool "Full dynticks system (tickless)"
873451d024SFrederic Weisbecker	# NO_HZ_COMMON dependency
88ab71d36dSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
89fae30dd6SFrederic Weisbecker	# We need at least one periodic CPU for timekeeping
90fae30dd6SFrederic Weisbecker	depends on SMP
91fae30dd6SFrederic Weisbecker	depends on HAVE_CONTEXT_TRACKING
92c58b0df1SFrederic Weisbecker	# VIRT_CPU_ACCOUNTING_GEN dependency
93554b0004SKevin Hilman	depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
943451d024SFrederic Weisbecker	select NO_HZ_COMMON
95ab71d36dSFrederic Weisbecker	select RCU_NOCB_CPU
96c58b0df1SFrederic Weisbecker	select VIRT_CPU_ACCOUNTING_GEN
9776c24fb0SFrederic Weisbecker	select IRQ_WORK
98bf29cb23SPaul E. McKenney	select CPU_ISOLATION
99a831881bSFrederic Weisbecker	help
100a831881bSFrederic Weisbecker	 Adaptively try to shutdown the tick whenever possible, even when
101a831881bSFrederic Weisbecker	 the CPU is running tasks. Typically this requires running a single
102a831881bSFrederic Weisbecker	 task on the CPU. Chances for running tickless are maximized when
103a831881bSFrederic Weisbecker	 the task mostly runs in userspace and has few kernel activity.
104a831881bSFrederic Weisbecker
105c5bfece2SFrederic Weisbecker	 You need to fill up the nohz_full boot parameter with the
106a831881bSFrederic Weisbecker	 desired range of dynticks CPUs.
107a831881bSFrederic Weisbecker
108a831881bSFrederic Weisbecker	 This is implemented at the expense of some overhead in user <-> kernel
109a831881bSFrederic Weisbecker	 transitions: syscalls, exceptions and interrupts. Even when it's
110a831881bSFrederic Weisbecker	 dynamically off.
111a831881bSFrederic Weisbecker
112a831881bSFrederic Weisbecker	 Say N.
113a831881bSFrederic Weisbecker
1143ca277e4SFrederic Weisbeckerendchoice
1153ca277e4SFrederic Weisbecker
116f98823acSFrederic Weisbeckerconfig NO_HZ_FULL_ALL
117f96a34e2SPaul Gortmaker       bool "Full dynticks system on all CPUs by default (except CPU 0)"
118f98823acSFrederic Weisbecker       depends on NO_HZ_FULL
119f98823acSFrederic Weisbecker       help
120f98823acSFrederic Weisbecker         If the user doesn't pass the nohz_full boot option to
121f98823acSFrederic Weisbecker	 define the range of full dynticks CPUs, consider that all
122f98823acSFrederic Weisbecker	 CPUs in the system are full dynticks by default.
123f98823acSFrederic Weisbecker	 Note the boot CPU will still be kept outside the range to
124f98823acSFrederic Weisbecker	 handle the timekeeping duty.
125f98823acSFrederic Weisbecker
1260644ca5cSFrederic Weisbeckerconfig NO_HZ
1270644ca5cSFrederic Weisbecker	bool "Old Idle dynticks config"
1280644ca5cSFrederic Weisbecker	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
1290644ca5cSFrederic Weisbecker	help
1300644ca5cSFrederic Weisbecker	  This is the old config entry that enables dynticks idle.
1310644ca5cSFrederic Weisbecker	  We keep it around for a little while to enforce backward
1320644ca5cSFrederic Weisbecker	  compatibility with older config files.
1330644ca5cSFrederic Weisbecker
134764e0da1SThomas Gleixnerconfig HIGH_RES_TIMERS
135764e0da1SThomas Gleixner	bool "High Resolution Timer Support"
136764e0da1SThomas Gleixner	depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
137764e0da1SThomas Gleixner	select TICK_ONESHOT
138764e0da1SThomas Gleixner	help
139764e0da1SThomas Gleixner	  This option enables high resolution timer support. If your
140764e0da1SThomas Gleixner	  hardware is not capable then this option only increases
141764e0da1SThomas Gleixner	  the size of the kernel image.
142764e0da1SThomas Gleixner
143764e0da1SThomas Gleixnerendmenu
144764e0da1SThomas Gleixnerendif
145