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