linux/kernel/time/Kconfig
<<
>>
Prefs
   1# SPDX-License-Identifier: GPL-2.0-only
   2#
   3# Timer subsystem related configuration options
   4#
   5
   6# Options selectable by arch Kconfig
   7
   8# Watchdog function for clocksources to detect instabilities
   9config CLOCKSOURCE_WATCHDOG
  10        bool
  11
  12# Architecture has extra clocksource data
  13config ARCH_CLOCKSOURCE_DATA
  14        bool
  15
  16# Architecture has extra clocksource init called from registration
  17config ARCH_CLOCKSOURCE_INIT
  18        bool
  19
  20# Clocksources require validation of the clocksource against the last
  21# cycle update - x86/TSC misfeature
  22config CLOCKSOURCE_VALIDATE_LAST_CYCLE
  23        bool
  24
  25# Timekeeping vsyscall support
  26config GENERIC_TIME_VSYSCALL
  27        bool
  28
  29# The generic clock events infrastructure
  30config GENERIC_CLOCKEVENTS
  31        def_bool !LEGACY_TIMER_TICK
  32
  33# Architecture can handle broadcast in a driver-agnostic way
  34config ARCH_HAS_TICK_BROADCAST
  35        bool
  36
  37# Clockevents broadcasting infrastructure
  38config GENERIC_CLOCKEVENTS_BROADCAST
  39        bool
  40        depends on GENERIC_CLOCKEVENTS
  41
  42# Automatically adjust the min. reprogramming time for
  43# clock event device
  44config GENERIC_CLOCKEVENTS_MIN_ADJUST
  45        bool
  46
  47# Generic update of CMOS clock
  48config GENERIC_CMOS_UPDATE
  49        bool
  50
  51# Select to handle posix CPU timers from task_work
  52# and not from the timer interrupt context
  53config HAVE_POSIX_CPU_TIMERS_TASK_WORK
  54        bool
  55
  56config POSIX_CPU_TIMERS_TASK_WORK
  57        bool
  58        default y if POSIX_TIMERS && HAVE_POSIX_CPU_TIMERS_TASK_WORK
  59
  60config LEGACY_TIMER_TICK
  61        bool
  62        help
  63          The legacy timer tick helper is used by platforms that
  64          lack support for the generic clockevent framework.
  65          New platforms should use generic clockevents instead.
  66
  67config TIME_KUNIT_TEST
  68        tristate "KUnit test for kernel/time functions" if !KUNIT_ALL_TESTS
  69        depends on KUNIT
  70        default KUNIT_ALL_TESTS
  71        help
  72          Enable this option to test RTC library functions.
  73
  74          If unsure, say N.
  75
  76if GENERIC_CLOCKEVENTS
  77menu "Timers subsystem"
  78
  79# Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is
  80# only related to the tick functionality. Oneshot clockevent devices
  81# are supported independent of this.
  82config TICK_ONESHOT
  83        bool
  84
  85config NO_HZ_COMMON
  86        bool
  87        select TICK_ONESHOT
  88
  89choice
  90        prompt "Timer tick handling"
  91        default NO_HZ_IDLE if NO_HZ
  92
  93config HZ_PERIODIC
  94        bool "Periodic timer ticks (constant rate, no dynticks)"
  95        help
  96          This option keeps the tick running periodically at a constant
  97          rate, even when the CPU doesn't need it.
  98
  99config NO_HZ_IDLE
 100        bool "Idle dynticks system (tickless idle)"
 101        select NO_HZ_COMMON
 102        help
 103          This option enables a tickless idle system: timer interrupts
 104          will only trigger on an as-needed basis when the system is idle.
 105          This is usually interesting for energy saving.
 106
 107          Most of the time you want to say Y here.
 108
 109config NO_HZ_FULL
 110        bool "Full dynticks system (tickless)"
 111        # NO_HZ_COMMON dependency
 112        # We need at least one periodic CPU for timekeeping
 113        depends on SMP
 114        depends on HAVE_CONTEXT_TRACKING
 115        # VIRT_CPU_ACCOUNTING_GEN dependency
 116        depends on HAVE_VIRT_CPU_ACCOUNTING_GEN
 117        select NO_HZ_COMMON
 118        select RCU_NOCB_CPU
 119        select VIRT_CPU_ACCOUNTING_GEN
 120        select IRQ_WORK
 121        select CPU_ISOLATION
 122        help
 123         Adaptively try to shutdown the tick whenever possible, even when
 124         the CPU is running tasks. Typically this requires running a single
 125         task on the CPU. Chances for running tickless are maximized when
 126         the task mostly runs in userspace and has few kernel activity.
 127
 128         You need to fill up the nohz_full boot parameter with the
 129         desired range of dynticks CPUs to use it. This is implemented at
 130         the expense of some overhead in user <-> kernel transitions:
 131         syscalls, exceptions and interrupts.
 132
 133         By default, without passing the nohz_full parameter, this behaves just
 134         like NO_HZ_IDLE.
 135
 136         If you're a distro say Y.
 137
 138endchoice
 139
 140config CONTEXT_TRACKING
 141       bool
 142
 143config CONTEXT_TRACKING_FORCE
 144        bool "Force context tracking"
 145        depends on CONTEXT_TRACKING
 146        default y if !NO_HZ_FULL
 147        help
 148          The major pre-requirement for full dynticks to work is to
 149          support the context tracking subsystem. But there are also
 150          other dependencies to provide in order to make the full
 151          dynticks working.
 152
 153          This option stands for testing when an arch implements the
 154          context tracking backend but doesn't yet fulfill all the
 155          requirements to make the full dynticks feature working.
 156          Without the full dynticks, there is no way to test the support
 157          for context tracking and the subsystems that rely on it: RCU
 158          userspace extended quiescent state and tickless cputime
 159          accounting. This option copes with the absence of the full
 160          dynticks subsystem by forcing the context tracking on all
 161          CPUs in the system.
 162
 163          Say Y only if you're working on the development of an
 164          architecture backend for the context tracking.
 165
 166          Say N otherwise, this option brings an overhead that you
 167          don't want in production.
 168
 169config NO_HZ
 170        bool "Old Idle dynticks config"
 171        help
 172          This is the old config entry that enables dynticks idle.
 173          We keep it around for a little while to enforce backward
 174          compatibility with older config files.
 175
 176config HIGH_RES_TIMERS
 177        bool "High Resolution Timer Support"
 178        select TICK_ONESHOT
 179        help
 180          This option enables high resolution timer support. If your
 181          hardware is not capable then this option only increases
 182          the size of the kernel image.
 183
 184endmenu
 185endif
 186