• C
    x86/tsc: Always Running Timer (ART) correlated clocksource · f9677e0f
    Christopher S. Hall 提交于
    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: NThomas Gleixner <tglx@linutronix.de>
    Signed-off-by: NChristopher 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: NJohn Stultz <john.stultz@linaro.org>
    f9677e0f
tsc.c 33.5 KB