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