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 1505ad717cSFeng Tang# Platforms has a persistent clock 166f16eebeSJohn Stultzconfig ALWAYS_USE_PERSISTENT_CLOCK 1705ad717cSFeng Tang bool 1805ad717cSFeng Tang default n 1905ad717cSFeng Tang 20b5e498adSThomas Gleixner# Timekeeping vsyscall support 21576094b7SJohn Stultzconfig GENERIC_TIME_VSYSCALL 22576094b7SJohn Stultz bool 23576094b7SJohn Stultz 24576094b7SJohn Stultz# Timekeeping vsyscall support 2570639421SJohn Stultzconfig GENERIC_TIME_VSYSCALL_OLD 26b5e498adSThomas Gleixner bool 27b5e498adSThomas Gleixner 28b5e498adSThomas Gleixner# ktime_t scalar 64bit nsec representation 29b5e498adSThomas Gleixnerconfig KTIME_SCALAR 30b5e498adSThomas Gleixner bool 31b5e498adSThomas Gleixner 32b5e498adSThomas Gleixner# Old style timekeeping 33b5e498adSThomas Gleixnerconfig ARCH_USES_GETTIMEOFFSET 34b5e498adSThomas Gleixner bool 35b5e498adSThomas Gleixner 36b5e498adSThomas Gleixner# The generic clock events infrastructure 37b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS 38b5e498adSThomas Gleixner bool 39b5e498adSThomas Gleixner 40764e0da1SThomas Gleixner# Migration helper. Builds, but does not invoke 41764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BUILD 42764e0da1SThomas Gleixner bool 43764e0da1SThomas Gleixner default y 44764e0da1SThomas Gleixner depends on GENERIC_CLOCKEVENTS 45764e0da1SThomas Gleixner 4612ad1000SMark Rutland# Architecture can handle broadcast in a driver-agnostic way 4712ad1000SMark Rutlandconfig ARCH_HAS_TICK_BROADCAST 4812ad1000SMark Rutland bool 4912ad1000SMark Rutland 50b5e498adSThomas Gleixner# Clockevents broadcasting infrastructure 51b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BROADCAST 52b5e498adSThomas Gleixner bool 53b5e498adSThomas Gleixner depends on GENERIC_CLOCKEVENTS 54b5e498adSThomas Gleixner 55764e0da1SThomas Gleixner# Automatically adjust the min. reprogramming time for 56764e0da1SThomas Gleixner# clock event device 57764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_MIN_ADJUST 58764e0da1SThomas Gleixner bool 59764e0da1SThomas Gleixner 60b5e498adSThomas Gleixner# Generic update of CMOS clock 61b5e498adSThomas Gleixnerconfig GENERIC_CMOS_UPDATE 62b5e498adSThomas Gleixner bool 63764e0da1SThomas Gleixner 64764e0da1SThomas Gleixnerif GENERIC_CLOCKEVENTS 65764e0da1SThomas Gleixnermenu "Timers subsystem" 66764e0da1SThomas Gleixner 673451d024SFrederic Weisbecker# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is 68764e0da1SThomas Gleixner# only related to the tick functionality. Oneshot clockevent devices 69764e0da1SThomas Gleixner# are supported independ of this. 70764e0da1SThomas Gleixnerconfig TICK_ONESHOT 71764e0da1SThomas Gleixner bool 72764e0da1SThomas Gleixner 733451d024SFrederic Weisbeckerconfig NO_HZ_COMMON 743451d024SFrederic Weisbecker bool 753451d024SFrederic Weisbecker depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS 763451d024SFrederic Weisbecker select TICK_ONESHOT 773451d024SFrederic Weisbecker 783ca277e4SFrederic Weisbeckerchoice 793ca277e4SFrederic Weisbecker prompt "Timer tick handling" 803ca277e4SFrederic Weisbecker default NO_HZ_IDLE if NO_HZ 813ca277e4SFrederic Weisbecker 825b533f4fSFrederic Weisbeckerconfig HZ_PERIODIC 833ca277e4SFrederic Weisbecker bool "Periodic timer ticks (constant rate, no dynticks)" 843ca277e4SFrederic Weisbecker help 853ca277e4SFrederic Weisbecker This option keeps the tick running periodically at a constant 863ca277e4SFrederic Weisbecker rate, even when the CPU doesn't need it. 873ca277e4SFrederic Weisbecker 883ca277e4SFrederic Weisbeckerconfig NO_HZ_IDLE 893ca277e4SFrederic Weisbecker bool "Idle dynticks system (tickless idle)" 90764e0da1SThomas Gleixner depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS 913451d024SFrederic Weisbecker select NO_HZ_COMMON 92764e0da1SThomas Gleixner help 933ca277e4SFrederic Weisbecker This option enables a tickless idle system: timer interrupts 943ca277e4SFrederic Weisbecker will only trigger on an as-needed basis when the system is idle. 953ca277e4SFrederic Weisbecker This is usually interesting for energy saving. 963ca277e4SFrederic Weisbecker 973ca277e4SFrederic Weisbecker Most of the time you want to say Y here. 98764e0da1SThomas Gleixner 99c5bfece2SFrederic Weisbeckerconfig NO_HZ_FULL 100fae30dd6SFrederic Weisbecker bool "Full dynticks system (tickless)" 1013451d024SFrederic Weisbecker # NO_HZ_COMMON dependency 102ab71d36dSFrederic Weisbecker depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS 103fae30dd6SFrederic Weisbecker # We need at least one periodic CPU for timekeeping 104fae30dd6SFrederic Weisbecker depends on SMP 105fae30dd6SFrederic Weisbecker # RCU_USER_QS dependency 106fae30dd6SFrederic Weisbecker depends on HAVE_CONTEXT_TRACKING 107ab71d36dSFrederic Weisbecker # RCU_NOCB_CPU dependency 108ab71d36dSFrederic Weisbecker depends on TREE_RCU || TREE_PREEMPT_RCU 109ab71d36dSFrederic Weisbecker depends on VIRT_CPU_ACCOUNTING_GEN 1103451d024SFrederic Weisbecker select NO_HZ_COMMON 111ab71d36dSFrederic Weisbecker select RCU_USER_QS 112ab71d36dSFrederic Weisbecker select RCU_NOCB_CPU 113a831881bSFrederic Weisbecker select CONTEXT_TRACKING_FORCE 114*76c24fb0SFrederic Weisbecker select IRQ_WORK 115a831881bSFrederic Weisbecker help 116a831881bSFrederic Weisbecker Adaptively try to shutdown the tick whenever possible, even when 117a831881bSFrederic Weisbecker the CPU is running tasks. Typically this requires running a single 118a831881bSFrederic Weisbecker task on the CPU. Chances for running tickless are maximized when 119a831881bSFrederic Weisbecker the task mostly runs in userspace and has few kernel activity. 120a831881bSFrederic Weisbecker 121c5bfece2SFrederic Weisbecker You need to fill up the nohz_full boot parameter with the 122a831881bSFrederic Weisbecker desired range of dynticks CPUs. 123a831881bSFrederic Weisbecker 124a831881bSFrederic Weisbecker This is implemented at the expense of some overhead in user <-> kernel 125a831881bSFrederic Weisbecker transitions: syscalls, exceptions and interrupts. Even when it's 126a831881bSFrederic Weisbecker dynamically off. 127a831881bSFrederic Weisbecker 128a831881bSFrederic Weisbecker Say N. 129a831881bSFrederic Weisbecker 1303ca277e4SFrederic Weisbeckerendchoice 1313ca277e4SFrederic Weisbecker 1320644ca5cSFrederic Weisbeckerconfig NO_HZ 1330644ca5cSFrederic Weisbecker bool "Old Idle dynticks config" 1340644ca5cSFrederic Weisbecker depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS 1350644ca5cSFrederic Weisbecker help 1360644ca5cSFrederic Weisbecker This is the old config entry that enables dynticks idle. 1370644ca5cSFrederic Weisbecker We keep it around for a little while to enforce backward 1380644ca5cSFrederic Weisbecker compatibility with older config files. 1390644ca5cSFrederic Weisbecker 140764e0da1SThomas Gleixnerconfig HIGH_RES_TIMERS 141764e0da1SThomas Gleixner bool "High Resolution Timer Support" 142764e0da1SThomas Gleixner depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS 143764e0da1SThomas Gleixner select TICK_ONESHOT 144764e0da1SThomas Gleixner help 145764e0da1SThomas Gleixner This option enables high resolution timer support. If your 146764e0da1SThomas Gleixner hardware is not capable then this option only increases 147764e0da1SThomas Gleixner the size of the kernel image. 148764e0da1SThomas Gleixner 149764e0da1SThomas Gleixnerendmenu 150764e0da1SThomas Gleixnerendif 151