Architectures have extra archdata in the clocksource, e.g. for VDSO support. There are no sanity checks or general initializations for this available. Add support for that. Signed-off-by: Thomas Gleixner <tglx@linutronix.de> Acked-by: Andy Lutomirski <luto@kernel.org> Acked-by: John Stultz <john.stultz@linaro.org> Cc: Peter Zijlstra <peterz@infradead.org> Cc: Matt Rickard <matt@softrans.com.au> Cc: Stephen Boyd <sboyd@kernel.org> Cc: Florian Weimer <fweimer@redhat.com> Cc: "K. Y. Srinivasan" <kys@microsoft.com> Cc: Vitaly Kuznetsov <vkuznets@redhat.com> Cc: devel@linuxdriverproject.org Cc: virtualization@lists.linux-foundation.org Cc: Paolo Bonzini <pbonzini@redhat.com> Cc: Arnd Bergmann <arnd@arndb.de> Cc: Juergen Gross <jgross@suse.com> Link: https://lkml.kernel.org/r/20180917130706.973042587@linutronix.de
3.6 KiB
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
Old style timekeeping
config ARCH_USES_GETTIMEOFFSET bool
The generic clock events infrastructure
config GENERIC_CLOCKEVENTS bool
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 independent 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 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)" 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_FULL bool "Full dynticks system (tickless)" # NO_HZ_COMMON dependency depends on !ARCH_USES_GETTIMEOFFSET && GENERIC_CLOCKEVENTS # 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.
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