• Linus Torvalds's avatar
    Merge tag 'x86-timers-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip · 458ef2a2
    Linus Torvalds authored
    Pull x86 timer updates from Thomas Gleixner:
     "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"
    
    * tag 'x86-timers-2020-03-30' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip:
      x86/tsc_msr: Make MSR derived TSC frequency more accurate
      x86/tsc_msr: Fix MSR_FSB_FREQ mask for Cherry Trail devices
      x86/tsc_msr: Use named struct initializers
    458ef2a2
tsc_msr.c 6.92 KB