summaryrefslogblamecommitdiff
path: root/kernel/time/Kconfig
blob: 358d601a4fec8881f3a4089f4fc051710b36c363 (plain) (tree)
1
2
3
4
5
6
7
8
9
10
11
12
13
14


                                               
 









                                                            
                                  
                                  


                 
                              



                              
                                













                                          





                                               



                                                            




                                         




                                                      


                              



                       
                                                                           




                                                                    




                                                                  



                                    
                  






                                                                       
                                                                  
                           
            




                                                                          
 
                 
                                              
                                 
                                                                  



                                                           


                                               
                           




                                                                         



                                                                           
                                                                  







                                                                               

         







                                                                  










                                                                    
#
# 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 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
	# RCU_USER_QS dependency
	depends on HAVE_CONTEXT_TRACKING
	# 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_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