# # Timer subsystem related configuration options # # Options selectable by arch Kconfig # Watchdog function for clocksources to detect instabilities config CLOCKSOURCE_WATCHDOG bool # Architecture has extra clocksource data config ARCH_CLOCKSOURCE_DATA bool # Platforms has a persistent clock config ALWAYS_USE_PERSISTENT_CLOCK bool default n # Timekeeping vsyscall support config GENERIC_TIME_VSYSCALL bool # Timekeeping vsyscall support config GENERIC_TIME_VSYSCALL_OLD bool # ktime_t scalar 64bit nsec representation config KTIME_SCALAR bool # Old style timekeeping config ARCH_USES_GETTIMEOFFSET bool # The generic clock events infrastructure config GENERIC_CLOCKEVENTS bool # Migration helper. Builds, but does not invoke config GENERIC_CLOCKEVENTS_BUILD bool default y depends on GENERIC_CLOCKEVENTS # Architecture can handle broadcast in a driver-agnostic way config ARCH_HAS_TICK_BROADCAST bool # Clockevents broadcasting infrastructure config GENERIC_CLOCKEVENTS_BROADCAST bool depends on GENERIC_CLOCKEVENTS # Automatically adjust the min. reprogramming time for # clock event device config GENERIC_CLOCKEVENTS_MIN_ADJUST bool # Generic update of CMOS clock config GENERIC_CMOS_UPDATE bool if GENERIC_CLOCKEVENTS menu "Timers subsystem" # Core internal switch. Selected by NO_HZ_COMMON / HIGH_RES_TIMERS. This is # only related to the tick functionality. Oneshot clockevent devices # are supported independ of this. config TICK_ONESHOT bool config NO_HZ_COMMON bool depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS select TICK_ONESHOT choice prompt "Timer tick handling" default NO_HZ_IDLE if NO_HZ config PERIODIC_HZ bool "Periodic timer ticks (constant rate, no dynticks)" help This option keeps the tick running periodically at a constant rate, even when the CPU doesn't need it. config NO_HZ_IDLE bool "Idle dynticks system (tickless idle)" depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS select NO_HZ_COMMON help This option enables a tickless idle system: timer interrupts will only trigger on an as-needed basis when the system is idle. This is usually interesting for energy saving. Most of the time you want to say Y here. config NO_HZ_EXTENDED bool "Full dynticks system (tickless single task)" # NO_HZ_COMMON dependency depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS # RCU_USER_QS depends on HAVE_CONTEXT_TRACKING && SMP # RCU_NOCB_CPU dependency depends on TREE_RCU || TREE_PREEMPT_RCU depends on VIRT_CPU_ACCOUNTING_GEN select NO_HZ_COMMON select RCU_USER_QS select RCU_NOCB_CPU select CONTEXT_TRACKING_FORCE help Adaptively try to shutdown the tick whenever possible, even when the CPU is running tasks. Typically this requires running a single task on the CPU. Chances for running tickless are maximized when the task mostly runs in userspace and has few kernel activity. You need to fill up the nohz_extended boot parameter with the desired range of dynticks CPUs. This is implemented at the expense of some overhead in user <-> kernel transitions: syscalls, exceptions and interrupts. Even when it's dynamically off. Say N. endchoice config NO_HZ bool "Old Idle dynticks config" depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS help This is the old config entry that enables dynticks idle. We keep it around for a little while to enforce backward compatibility with older config files. config HIGH_RES_TIMERS bool "High Resolution Timer Support" depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS select TICK_ONESHOT help This option enables high resolution timer support. If your hardware is not capable then this option only increases the size of the kernel image. endmenu endif