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