mirror of
https://github.com/torvalds/linux.git
synced 2026-05-12 16:18:45 +02:00
- Make the handling of compat functions consistent and more robust
- Rework the underlying data store so that it is dynamically
allocated, which allows the conversion of the last holdout SPARC64
to the generic VDSO implementation
- Rework the SPARC64 VDSO to utilize the generic implementation
- Mop up the left overs of the non-generic VDSO support in the core
code.
- Expand the VDSO selftest and make them more robust
- Allow time namespaces to be enabled independently of the generic
VDSO support, which was not possible before due to SPARC64 not
using it.
- Various cleanups and improvements in the related code.
-----BEGIN PGP SIGNATURE-----
iQJEBAABCgAuFiEEQp8+kY+LLUocC4bMphj1TA10mKEFAmnb0v8QHHRnbHhAa2Vy
bmVsLm9yZwAKCRCmGPVMDXSYocfqD/9ywgnvwRH6B612mY4PI3qCbLHs6n9f78aH
YwyXmmfBZ5vt1ZtptHD+BAxiIMm9GC+/exdj5zhcOWucnBVhorcloE6evxhkJAMn
RhTQFKkEmcA/UV2Yfct9r+33kgZRyu4IIul4J7hgn2o5T1BqwZbOil0W/O5adr5P
MDLxjT1OLV80ZZWI9qbWcR/aR7W7sHcdwfVPPqjhombRY7f391Mo3dZeM5C2y55x
8TXCEqVpN1RJzFinWEgQN7QpP4OmF0rRuXSrDQpkH6pk/+RSqNlT/QGG7MJtmCQR
E6CeBjNRUn318KiroaGyTKlM9xsL3gNoiCY24ZTwzZxx3g5gSAR3KTCTJhQU0hpu
Svxj+ksqEAyW7fAOIsbce6W8fUPKC2KM+juXgPKcqZ5hjE2fALD+eEYMlq00jSiu
sj71007cM9tZKOXPdWs3Fv7AY2Yj7iiRiRz9gv1wqS1z7ybxiaFjxjLYYakej0tr
rmwBDEGhNow7msZZttr01BRZk9hDUWfIiJtL+0BrgRLNzst2A7WoagtZ2s0Z7Psl
RjtWgYNBDJ878xK0J+Djqb9TyLraGWZShIIna9uYCAJX9i954xfKJ//NOnUkZhcl
jslDLHhdttyJ+TmgIsc1ntUGvYvHqH5ywQpyDfWepMKyIYdaJLHOr2K6bwFnGHdw
uocXvLrkXw==
=8ixX
-----END PGP SIGNATURE-----
Merge tag 'timers-vdso-2026-04-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
Pull vdso updates from Thomas Gleixner:
- Make the handling of compat functions consistent and more robust
- Rework the underlying data store so that it is dynamically allocated,
which allows the conversion of the last holdout SPARC64 to the
generic VDSO implementation
- Rework the SPARC64 VDSO to utilize the generic implementation
- Mop up the left overs of the non-generic VDSO support in the core
code
- Expand the VDSO selftest and make them more robust
- Allow time namespaces to be enabled independently of the generic VDSO
support, which was not possible before due to SPARC64 not using it
- Various cleanups and improvements in the related code
* tag 'timers-vdso-2026-04-12' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip: (51 commits)
timens: Use task_lock guard in timens_get*()
timens: Use mutex guard in proc_timens_set_offset()
timens: Simplify some calls to put_time_ns()
timens: Add a __free() wrapper for put_time_ns()
timens: Remove dependency on the vDSO
vdso/timens: Move functions to new file
selftests: vDSO: vdso_test_correctness: Add a test for time()
selftests: vDSO: vdso_test_correctness: Use facilities from parse_vdso.c
selftests: vDSO: vdso_test_correctness: Handle different tv_usec types
selftests: vDSO: vdso_test_correctness: Drop SYS_getcpu fallbacks
selftests: vDSO: vdso_test_gettimeofday: Remove nolibc checks
Revert "selftests: vDSO: parse_vdso: Use UAPI headers instead of libc headers"
random: vDSO: Remove ifdeffery
random: vDSO: Trim vDSO includes
vdso/datapage: Trim down unnecessary includes
vdso/datapage: Remove inclusion of gettimeofday.h
vdso/helpers: Explicitly include vdso/processor.h
vdso/gettimeofday: Add explicit includes
random: vDSO: Add explicit includes
MIPS: vdso: Explicitly include asm/vdso/vdso.h
...
225 lines
6.3 KiB
Plaintext
225 lines
6.3 KiB
Plaintext
# 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 init called from registration
|
|
config ARCH_CLOCKSOURCE_INIT
|
|
bool
|
|
|
|
config ARCH_WANTS_CLOCKSOURCE_READ_INLINE
|
|
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
|
|
|
|
# Handle broadcast in default_idle_call()
|
|
config GENERIC_CLOCKEVENTS_BROADCAST_IDLE
|
|
bool
|
|
depends on GENERIC_CLOCKEVENTS_BROADCAST
|
|
|
|
# Automatically adjust the min. reprogramming time for
|
|
# clock event device
|
|
config GENERIC_CLOCKEVENTS_MIN_ADJUST
|
|
bool
|
|
|
|
config GENERIC_CLOCKEVENTS_COUPLED
|
|
bool
|
|
|
|
config GENERIC_CLOCKEVENTS_COUPLED_INLINE
|
|
select GENERIC_CLOCKEVENTS_COUPLED
|
|
bool
|
|
|
|
# Generic update of CMOS clock
|
|
config GENERIC_CMOS_UPDATE
|
|
bool
|
|
|
|
# Deferred rearming of the hrtimer interrupt
|
|
config HRTIMER_REARM_DEFERRED
|
|
def_bool y
|
|
depends on GENERIC_ENTRY && HAVE_GENERIC_TIF_BITS
|
|
depends on HIGH_RES_TIMERS && SCHED_HRTICK
|
|
|
|
# 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.
|
|
|
|
config CONTEXT_TRACKING
|
|
bool
|
|
|
|
config CONTEXT_TRACKING_IDLE
|
|
bool
|
|
select CONTEXT_TRACKING
|
|
help
|
|
Tracks idle state on behalf of RCU.
|
|
|
|
menu "Timers subsystem"
|
|
|
|
if GENERIC_CLOCKEVENTS
|
|
# 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_USER
|
|
# 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_USER
|
|
bool
|
|
depends on HAVE_CONTEXT_TRACKING_USER
|
|
select CONTEXT_TRACKING
|
|
help
|
|
Track transitions between kernel and user on behalf of RCU and
|
|
tickless cputime accounting. The former case relies on context
|
|
tracking to enter/exit RCU extended quiescent states.
|
|
|
|
config CONTEXT_TRACKING_USER_FORCE
|
|
bool "Force user context tracking"
|
|
depends on CONTEXT_TRACKING_USER
|
|
default y if !NO_HZ_FULL
|
|
help
|
|
The major pre-requirement for full dynticks to work is to
|
|
support the user 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
|
|
user 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 user 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 user context tracking on all
|
|
CPUs in the system.
|
|
|
|
Say Y only if you're working on the development of an
|
|
architecture backend for the user 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.
|
|
|
|
endif
|
|
|
|
config POSIX_AUX_CLOCKS
|
|
bool "Enable auxiliary POSIX clocks"
|
|
depends on POSIX_TIMERS
|
|
help
|
|
Auxiliary POSIX clocks are clocks which can be steered
|
|
independently of the core timekeeper, which controls the
|
|
MONOTONIC, REALTIME, BOOTTIME and TAI clocks. They are useful to
|
|
provide e.g. lockless time accessors to independent PTP clocks
|
|
and other clock domains, which are not correlated to the TAI/NTP
|
|
notion of time.
|
|
|
|
endmenu
|