• Paul E. McKenney's avatar
    clocksource: Verify HPET and PMTMR when TSC unverified · efc8b329
    Paul E. McKenney authored
    On systems with two or fewer sockets, when the boot CPU has CONSTANT_TSC,
    NONSTOP_TSC, and TSC_ADJUST, clocksource watchdog verification of the
    TSC is disabled.  This works well much of the time, but there is the
    occasional production-level system that meets all of these criteria, but
    which still has a TSC that skews significantly from atomic-clock time.
    This is usually attributed to a firmware or hardware fault.  Yes, the
    various NTP daemons do express their opinions of userspace-to-atomic-clock
    time skew, but they put them in various places, depending on the daemon
    and distro in question.  It would therefore be good for the kernel to
    have some clue that there is a problem.
    
    The old behavior of marking the TSC unstable is a non-starter because a
    great many workloads simply cannot tolerate the overheads and latencies
    of the various non-TSC clocksources.  In addition, NTP-corrected systems
    sometimes can tolerate significant kernel-space time skew as long as
    the userspace time sources are within epsilon of atomic-clock time.
    
    Therefore, when watchdog verification of TSC is disabled, enable it for
    HPET and PMTMR (AKA ACPI PM timer).  This provides the needed in-kernel
    time-skew diagnostic without degrading the system's performance.
    Signed-off-by: default avatarPaul E. McKenney <paulmck@kernel.org>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@redhat.com>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: Dave Hansen <dave.hansen@linux.intel.com>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Cc: Daniel Lezcano <daniel.lezcano@linaro.org>
    Cc: Waiman Long <longman@redhat.com>
    Cc: <x86@kernel.org>
    Tested-by: default avatarFeng Tang <feng.tang@intel.com>
    efc8b329
hpet.c 36.5 KB