ab71d36ddb
The full dynticks feature only shows up when all its Kconfig dependencies are met (RCU nocbs, RCU user mode, ...) This is far from being user friendly as those who want to activate this feature need to look into the Kconfig files and iterate through each dependency then activate these by hand in order to show and select the full dynticks Kconfig option. So process the other way around: show up the Kconfig option if the minimal low level dependencies are met and activate the high level ones when we enable the feature. Note there is one exception in the picture: CONFIG_VIRT_CPU_ACCOUNTING_GEN is part of a Kconfig choice menu and it appears we can't select it from another Kconfig selection when it's under such layout. So for now this particular item stays as a passive dependency. Reported-by: Ingo Molnar <mingo@kernel.org> Signed-off-by: Frederic Weisbecker <fweisbec@gmail.com> Cc: Andrew Morton <akpm@linux-foundation.org> Cc: Chris Metcalf <cmetcalf@tilera.com> Cc: Christoph Lameter <cl@linux.com> Cc: Geoff Levand <geoff@infradead.org> Cc: Gilad Ben Yossef <gilad@benyossef.com> Cc: Hakan Akkan <hakanakkan@gmail.com> Cc: Ingo Molnar <mingo@kernel.org> Cc: Kevin Hilman <khilman@linaro.org> Cc: Li Zhong <zhong@linux.vnet.ibm.com> Cc: Namhyung Kim <namhyung.kim@lge.com> Cc: Paul E. McKenney <paulmck@linux.vnet.ibm.com> Cc: Paul Gortmaker <paul.gortmaker@windriver.com> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Steven Rostedt <rostedt@goodmis.org> Cc: Thomas Gleixner <tglx@linutronix.de>
121 lines
3.0 KiB
Plaintext
121 lines
3.0 KiB
Plaintext
#
|
|
# 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 / 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
|
|
bool "Tickless System (Dynamic Ticks)"
|
|
depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS
|
|
select TICK_ONESHOT
|
|
help
|
|
This option enables a tickless system: timer interrupts will
|
|
only trigger on an as-needed basis both when the system is
|
|
busy and when the system is idle.
|
|
|
|
config NO_HZ_EXTENDED
|
|
bool "Full dynticks system"
|
|
# NO_HZ 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
|
|
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.
|
|
|
|
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
|