mirror of
				https://kernel.googlesource.com/pub/scm/linux/kernel/git/torvalds/linux
				synced 2025-11-05 01:03:37 +10:00 
			
		
		
		
	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
		
			
				
	
	
		
			139 lines
		
	
	
		
			3.6 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
	
	
			
		
		
	
	
			139 lines
		
	
	
		
			3.6 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
 | 
						|
 | 
						|
# 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
 |