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# The generic clock events infrastructure 30b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS 310774a6edSArnd Bergmann def_bool !LEGACY_TIMER_TICK 32b5e498adSThomas Gleixner 3312ad1000SMark Rutland# Architecture can handle broadcast in a driver-agnostic way 3412ad1000SMark Rutlandconfig ARCH_HAS_TICK_BROADCAST 3512ad1000SMark Rutland bool 3612ad1000SMark Rutland 37b5e498adSThomas Gleixner# Clockevents broadcasting infrastructure 38b5e498adSThomas Gleixnerconfig GENERIC_CLOCKEVENTS_BROADCAST 39b5e498adSThomas Gleixner bool 40b5e498adSThomas Gleixner depends on GENERIC_CLOCKEVENTS 41b5e498adSThomas Gleixner 42764e0da1SThomas Gleixner# Automatically adjust the min. reprogramming time for 43764e0da1SThomas Gleixner# clock event device 44764e0da1SThomas Gleixnerconfig GENERIC_CLOCKEVENTS_MIN_ADJUST 45764e0da1SThomas Gleixner bool 46764e0da1SThomas Gleixner 47b5e498adSThomas Gleixner# Generic update of CMOS clock 48b5e498adSThomas Gleixnerconfig GENERIC_CMOS_UPDATE 49b5e498adSThomas Gleixner bool 50764e0da1SThomas Gleixner 511fb497ddSThomas Gleixner# Select to handle posix CPU timers from task_work 521fb497ddSThomas Gleixner# and not from the timer interrupt context 531fb497ddSThomas Gleixnerconfig HAVE_POSIX_CPU_TIMERS_TASK_WORK 541fb497ddSThomas Gleixner bool 551fb497ddSThomas Gleixner 561fb497ddSThomas Gleixnerconfig POSIX_CPU_TIMERS_TASK_WORK 571fb497ddSThomas Gleixner bool 581fb497ddSThomas Gleixner default y if POSIX_TIMERS && HAVE_POSIX_CPU_TIMERS_TASK_WORK 591fb497ddSThomas Gleixner 60b3550164SArnd Bergmannconfig LEGACY_TIMER_TICK 61b3550164SArnd Bergmann bool 62b3550164SArnd Bergmann help 63b3550164SArnd Bergmann The legacy timer tick helper is used by platforms that 64b3550164SArnd Bergmann lack support for the generic clockevent framework. 65b3550164SArnd Bergmann New platforms should use generic clockevents instead. 66b3550164SArnd Bergmann 67*27601055SCassio Nericonfig TIME_KUNIT_TEST 68*27601055SCassio Neri tristate "KUnit test for kernel/time functions" if !KUNIT_ALL_TESTS 69*27601055SCassio Neri depends on KUNIT 70*27601055SCassio Neri default KUNIT_ALL_TESTS 71*27601055SCassio Neri help 72*27601055SCassio Neri Enable this option to test RTC library functions. 73*27601055SCassio Neri 74*27601055SCassio Neri If unsure, say N. 75*27601055SCassio Neri 76764e0da1SThomas Gleixnerif GENERIC_CLOCKEVENTS 77764e0da1SThomas Gleixnermenu "Timers subsystem" 78764e0da1SThomas Gleixner 793451d024SFrederic Weisbecker# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is 80764e0da1SThomas Gleixner# only related to the tick functionality. Oneshot clockevent devices 816082a6e4SRandy Dunlap# are supported independent of this. 82764e0da1SThomas Gleixnerconfig TICK_ONESHOT 83764e0da1SThomas Gleixner bool 84764e0da1SThomas Gleixner 853451d024SFrederic Weisbeckerconfig NO_HZ_COMMON 863451d024SFrederic Weisbecker bool 873451d024SFrederic Weisbecker select TICK_ONESHOT 883451d024SFrederic Weisbecker 893ca277e4SFrederic Weisbeckerchoice 903ca277e4SFrederic Weisbecker prompt "Timer tick handling" 913ca277e4SFrederic Weisbecker default NO_HZ_IDLE if NO_HZ 923ca277e4SFrederic Weisbecker 935b533f4fSFrederic Weisbeckerconfig HZ_PERIODIC 943ca277e4SFrederic Weisbecker bool "Periodic timer ticks (constant rate, no dynticks)" 953ca277e4SFrederic Weisbecker help 963ca277e4SFrederic Weisbecker This option keeps the tick running periodically at a constant 973ca277e4SFrederic Weisbecker rate, even when the CPU doesn't need it. 983ca277e4SFrederic Weisbecker 993ca277e4SFrederic Weisbeckerconfig NO_HZ_IDLE 1003ca277e4SFrederic Weisbecker bool "Idle dynticks system (tickless idle)" 1013451d024SFrederic Weisbecker select NO_HZ_COMMON 102764e0da1SThomas Gleixner help 1033ca277e4SFrederic Weisbecker This option enables a tickless idle system: timer interrupts 1043ca277e4SFrederic Weisbecker will only trigger on an as-needed basis when the system is idle. 1053ca277e4SFrederic Weisbecker This is usually interesting for energy saving. 1063ca277e4SFrederic Weisbecker 1073ca277e4SFrederic Weisbecker Most of the time you want to say Y here. 108764e0da1SThomas Gleixner 109c5bfece2SFrederic Weisbeckerconfig NO_HZ_FULL 110fae30dd6SFrederic Weisbecker bool "Full dynticks system (tickless)" 1113451d024SFrederic Weisbecker # NO_HZ_COMMON dependency 112fae30dd6SFrederic Weisbecker # We need at least one periodic CPU for timekeeping 113fae30dd6SFrederic Weisbecker depends on SMP 114fae30dd6SFrederic Weisbecker depends on HAVE_CONTEXT_TRACKING 115c58b0df1SFrederic Weisbecker # VIRT_CPU_ACCOUNTING_GEN dependency 116554b0004SKevin Hilman depends on HAVE_VIRT_CPU_ACCOUNTING_GEN 1173451d024SFrederic Weisbecker select NO_HZ_COMMON 118ab71d36dSFrederic Weisbecker select RCU_NOCB_CPU 119c58b0df1SFrederic Weisbecker select VIRT_CPU_ACCOUNTING_GEN 12076c24fb0SFrederic Weisbecker select IRQ_WORK 121bf29cb23SPaul E. McKenney select CPU_ISOLATION 122a831881bSFrederic Weisbecker help 123a831881bSFrederic Weisbecker Adaptively try to shutdown the tick whenever possible, even when 124a831881bSFrederic Weisbecker the CPU is running tasks. Typically this requires running a single 125a831881bSFrederic Weisbecker task on the CPU. Chances for running tickless are maximized when 126a831881bSFrederic Weisbecker the task mostly runs in userspace and has few kernel activity. 127a831881bSFrederic Weisbecker 128c5bfece2SFrederic Weisbecker You need to fill up the nohz_full boot parameter with the 129a831881bSFrederic Weisbecker desired range of dynticks CPUs. 130a831881bSFrederic Weisbecker 131a831881bSFrederic Weisbecker This is implemented at the expense of some overhead in user <-> kernel 132a831881bSFrederic Weisbecker transitions: syscalls, exceptions and interrupts. Even when it's 133a831881bSFrederic Weisbecker dynamically off. 134a831881bSFrederic Weisbecker 135a831881bSFrederic Weisbecker Say N. 136a831881bSFrederic Weisbecker 1373ca277e4SFrederic Weisbeckerendchoice 1383ca277e4SFrederic Weisbecker 139a4cffdadSPaul E. McKenneyconfig CONTEXT_TRACKING 140a4cffdadSPaul E. McKenney bool 141a4cffdadSPaul E. McKenney 142a4cffdadSPaul E. McKenneyconfig CONTEXT_TRACKING_FORCE 143a4cffdadSPaul E. McKenney bool "Force context tracking" 144a4cffdadSPaul E. McKenney depends on CONTEXT_TRACKING 145a4cffdadSPaul E. McKenney default y if !NO_HZ_FULL 146a4cffdadSPaul E. McKenney help 147a4cffdadSPaul E. McKenney The major pre-requirement for full dynticks to work is to 148a4cffdadSPaul E. McKenney support the context tracking subsystem. But there are also 149a4cffdadSPaul E. McKenney other dependencies to provide in order to make the full 150a4cffdadSPaul E. McKenney dynticks working. 151a4cffdadSPaul E. McKenney 152a4cffdadSPaul E. McKenney This option stands for testing when an arch implements the 153f6f5cd84SColin Ian King context tracking backend but doesn't yet fulfill all the 154a4cffdadSPaul E. McKenney requirements to make the full dynticks feature working. 155a4cffdadSPaul E. McKenney Without the full dynticks, there is no way to test the support 156a4cffdadSPaul E. McKenney for context tracking and the subsystems that rely on it: RCU 157a4cffdadSPaul E. McKenney userspace extended quiescent state and tickless cputime 158a4cffdadSPaul E. McKenney accounting. This option copes with the absence of the full 159a4cffdadSPaul E. McKenney dynticks subsystem by forcing the context tracking on all 160a4cffdadSPaul E. McKenney CPUs in the system. 161a4cffdadSPaul E. McKenney 162a4cffdadSPaul E. McKenney Say Y only if you're working on the development of an 163a4cffdadSPaul E. McKenney architecture backend for the context tracking. 164a4cffdadSPaul E. McKenney 165a4cffdadSPaul E. McKenney Say N otherwise, this option brings an overhead that you 166a4cffdadSPaul E. McKenney don't want in production. 167a4cffdadSPaul E. McKenney 1680644ca5cSFrederic Weisbeckerconfig NO_HZ 1690644ca5cSFrederic Weisbecker bool "Old Idle dynticks config" 1700644ca5cSFrederic Weisbecker help 1710644ca5cSFrederic Weisbecker This is the old config entry that enables dynticks idle. 1720644ca5cSFrederic Weisbecker We keep it around for a little while to enforce backward 1730644ca5cSFrederic Weisbecker compatibility with older config files. 1740644ca5cSFrederic Weisbecker 175764e0da1SThomas Gleixnerconfig HIGH_RES_TIMERS 176764e0da1SThomas Gleixner bool "High Resolution Timer Support" 177764e0da1SThomas Gleixner select TICK_ONESHOT 178764e0da1SThomas Gleixner help 179764e0da1SThomas Gleixner This option enables high resolution timer support. If your 180764e0da1SThomas Gleixner hardware is not capable then this option only increases 181764e0da1SThomas Gleixner the size of the kernel image. 182764e0da1SThomas Gleixner 183764e0da1SThomas Gleixnerendmenu 184764e0da1SThomas Gleixnerendif 185