Messages in this thread | | | Date | Mon, 30 Mar 2020 14:47:16 -0000 | From | Thomas Gleixner <> | Subject | [GIT pull] x86/timers for v5.7 |
| |
Linus,
please pull the latest x86/timers branch from:
git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip.git x86-timers-2020-03-30
up to: fac01d11722c: x86/tsc_msr: Make MSR derived TSC frequency more accurate
x86 timer updates:
- A series of commits to make the MSR derived CPU and TSC frequency more accurate.
It turned out that the frequency tables which have been taken from the SDM are inaccurate because the SDM provides truncated and rounded values, e.g. 83.3Mhz (83.3333...) or 116.7Mhz (116.6666...).
This causes time drift in the range of ~1 second per hour (20-30 seconds per day). On some of these SoCs it's not possible to recalibrate the TSC because there is no reference (PIT, HPET) available.
With some reverse engineering it was established that the possible frequencies are derived from the base clock with fixed multiplier / divider pairs.
For the CPU models which have a known crystal frequency the kernel now uses multiplier / divider pairs which bring the frequencies closer to reality and fix the observed time drift issues.
Thanks,
tglx
------------------> Hans de Goede (3): x86/tsc_msr: Use named struct initializers x86/tsc_msr: Fix MSR_FSB_FREQ mask for Cherry Trail devices x86/tsc_msr: Make MSR derived TSC frequency more accurate
arch/x86/kernel/tsc_msr.c | 128 ++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 112 insertions(+), 16 deletions(-)
| |