]> git.ipfire.org Git - thirdparty/kernel/linux.git/commit
timekeeping: Add clocksource read_snapshot() method and hw_cycles to snapshot
authorDavid Woodhouse <dwmw@amazon.co.uk>
Fri, 29 May 2026 20:01:29 +0000 (22:01 +0200)
committerThomas Gleixner <tglx@kernel.org>
Thu, 4 Jun 2026 09:04:18 +0000 (11:04 +0200)
commitca1ec8bfac8c95d0fed9e3611ea21400d1f37262
tree997f7855938c5ae94b5cc291eb1712133befa046
parenta6d799608e6a61b48908bff955200d03c34c90ca
timekeeping: Add clocksource read_snapshot() method and hw_cycles to snapshot

Add a read_snapshot() callback to struct clocksource which returns the
derived clocksource value while also providing the underlying hardware
counter reading and the related clocksource ID.

This allows ktime_get_snapshot_id() to populate new hw_cycles and hw_csid
fields in struct system_time_snapshot.

For clocksources that are derived from an underlying counter (e.g., Hyper-V
TSC page scales TSC to 10MHz, kvmclock scales TSC to 1GHz), this provides
atomic access to both the derived value needed for timekeeping
calculations, and the raw hardware counter needed by consumers like KVM's
master clock and the vmclock PTP driver.

[ tglx: Reworked it slightly ]

Signed-off-by: David Woodhouse <dwmw@amazon.co.uk>
Signed-off-by: Thomas Gleixner <tglx@kernel.org>
Reviewed-by: Jacob Keller <jacob.e.keller@intel.com>
Assisted-by: Kiro:claude-opus-4.6-1m
Link: https://patch.msgid.link/20260526230635.136914-1-dwmw2@infradead.org
Link: https://patch.msgid.link/20260529195558.202568489@kernel.org
include/linux/clocksource.h
include/linux/timekeeping.h
kernel/time/timekeeping.c