Skip to content
  • Daniel Vacek's avatar
    x86/tsc: Make calibration refinement more robust · a786ef15
    Daniel Vacek authored
    
    
    The threshold in tsc_read_refs() is constant which may favor slower CPUs
    but may not be optimal for simple reading of reference on faster ones.
    
    Hence make it proportional to tsc_khz when available to compensate for
    this. The threshold guards against any disturbance like IRQs, NMIs, SMIs
    or CPU stealing by host on guest systems so rename it accordingly and
    fix comments as well.
    
    Also on some systems there is noticeable DMI bus contention at some point
    during boot keeping the readout failing (observed with about one in ~300
    boots when testing). In that case retry also the second readout instead of
    simply bailing out unrefined. Usually the next second the readout returns
    fast just fine without any issues.
    
    Signed-off-by: default avatarDaniel Vacek <neelx@redhat.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: Borislav Petkov <bp@alien8.de>
    Cc: "H. Peter Anvin" <hpa@zytor.com>
    Link: https://lkml.kernel.org/r/1541437840-29293-1-git-send-email-neelx@redhat.com
    a786ef15