• Christopher S. Hall's avatar
    x86/tsc: Always Running Timer (ART) correlated clocksource · d30e3cde
    Christopher S. Hall authored
    BugLink: http://bugs.launchpad.net/bugs/1519625
    
    On modern Intel systems TSC is derived from the new Always Running Timer
    (ART). ART can be captured simultaneous to the capture of
    audio and network device clocks, allowing a correlation between timebases
    to be constructed. Upon capture, the driver converts the captured ART
    value to the appropriate system clock using the correlated clocksource
    mechanism.
    
    On systems that support ART a new CPUID leaf (0x15) returns parameters
    “m” and “n” such that:
    
    TSC_value = (ART_value * m) / n + k [n >= 1]
    
    [k is an offset that can adjusted by a privileged agent. The
    IA32_TSC_ADJUST MSR is an example of an interface to adjust k.
    See 17.14.4 of the Intel SDM for more details]
    
    Cc: Prarit Bhargava <prarit@redhat.com>
    Cc: Richard Cochran <richardcochran@gmail.com>
    Cc: Thomas Gleixner <tglx@linutronix.de>
    Cc: Ingo Molnar <mingo@kernel.org>
    Cc: Andy Lutomirski <luto@amacapital.net>
    Cc: kevin.b.stanton@intel.com
    Cc: kevin.j.clarke@intel.com
    Cc: hpa@zytor.com
    Cc: jeffrey.t.kirsher@intel.com
    Cc: netdev@vger.kernel.org
    Reviewed-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: default avatarChristopher S. Hall <christopher.s.hall@intel.com>
    [jstultz: Tweaked to fix build issue, also reworked math for
    64bit division on 32bit systems, as well as !CONFIG_CPU_FREQ build
    fixes]
    Signed-off-by: default avatarJohn Stultz <john.stultz@linaro.org>
    
    (cherry picked from commit f9677e0f)
    Signed-off-by: default avatarTim Gardner <tim.gardner@canonical.com>
    d30e3cde
tsc.c 33.5 KB