forked from Qortal/Brooklyn
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
185 lines
5.1 KiB
185 lines
5.1 KiB
# SPDX-License-Identifier: GPL-2.0-only |
|
# |
|
# 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 |
|
|
|
# Architecture has extra clocksource init called from registration |
|
config ARCH_CLOCKSOURCE_INIT |
|
bool |
|
|
|
# Clocksources require validation of the clocksource against the last |
|
# cycle update - x86/TSC misfeature |
|
config CLOCKSOURCE_VALIDATE_LAST_CYCLE |
|
bool |
|
|
|
# Timekeeping vsyscall support |
|
config GENERIC_TIME_VSYSCALL |
|
bool |
|
|
|
# The generic clock events infrastructure |
|
config GENERIC_CLOCKEVENTS |
|
def_bool !LEGACY_TIMER_TICK |
|
|
|
# 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 |
|
|
|
# Select to handle posix CPU timers from task_work |
|
# and not from the timer interrupt context |
|
config HAVE_POSIX_CPU_TIMERS_TASK_WORK |
|
bool |
|
|
|
config POSIX_CPU_TIMERS_TASK_WORK |
|
bool |
|
default y if POSIX_TIMERS && HAVE_POSIX_CPU_TIMERS_TASK_WORK |
|
|
|
config LEGACY_TIMER_TICK |
|
bool |
|
help |
|
The legacy timer tick helper is used by platforms that |
|
lack support for the generic clockevent framework. |
|
New platforms should use generic clockevents instead. |
|
|
|
config TIME_KUNIT_TEST |
|
tristate "KUnit test for kernel/time functions" if !KUNIT_ALL_TESTS |
|
depends on KUNIT |
|
default KUNIT_ALL_TESTS |
|
help |
|
Enable this option to test RTC library functions. |
|
|
|
If unsure, say N. |
|
|
|
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 independent of this. |
|
config TICK_ONESHOT |
|
bool |
|
|
|
config NO_HZ_COMMON |
|
bool |
|
select TICK_ONESHOT |
|
|
|
choice |
|
prompt "Timer tick handling" |
|
default NO_HZ_IDLE if NO_HZ |
|
|
|
config HZ_PERIODIC |
|
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)" |
|
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_FULL |
|
bool "Full dynticks system (tickless)" |
|
# NO_HZ_COMMON dependency |
|
# We need at least one periodic CPU for timekeeping |
|
depends on SMP |
|
depends on HAVE_CONTEXT_TRACKING |
|
# VIRT_CPU_ACCOUNTING_GEN dependency |
|
depends on HAVE_VIRT_CPU_ACCOUNTING_GEN |
|
select NO_HZ_COMMON |
|
select RCU_NOCB_CPU |
|
select VIRT_CPU_ACCOUNTING_GEN |
|
select IRQ_WORK |
|
select CPU_ISOLATION |
|
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_full boot parameter with the |
|
desired range of dynticks CPUs to use it. This is implemented at |
|
the expense of some overhead in user <-> kernel transitions: |
|
syscalls, exceptions and interrupts. |
|
|
|
By default, without passing the nohz_full parameter, this behaves just |
|
like NO_HZ_IDLE. |
|
|
|
If you're a distro say Y. |
|
|
|
endchoice |
|
|
|
config CONTEXT_TRACKING |
|
bool |
|
|
|
config CONTEXT_TRACKING_FORCE |
|
bool "Force context tracking" |
|
depends on CONTEXT_TRACKING |
|
default y if !NO_HZ_FULL |
|
help |
|
The major pre-requirement for full dynticks to work is to |
|
support the context tracking subsystem. But there are also |
|
other dependencies to provide in order to make the full |
|
dynticks working. |
|
|
|
This option stands for testing when an arch implements the |
|
context tracking backend but doesn't yet fulfill all the |
|
requirements to make the full dynticks feature working. |
|
Without the full dynticks, there is no way to test the support |
|
for context tracking and the subsystems that rely on it: RCU |
|
userspace extended quiescent state and tickless cputime |
|
accounting. This option copes with the absence of the full |
|
dynticks subsystem by forcing the context tracking on all |
|
CPUs in the system. |
|
|
|
Say Y only if you're working on the development of an |
|
architecture backend for the context tracking. |
|
|
|
Say N otherwise, this option brings an overhead that you |
|
don't want in production. |
|
|
|
config NO_HZ |
|
bool "Old Idle dynticks config" |
|
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" |
|
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
|
|
|