Index: sys/x86/x86/tsc.c =================================================================== --- sys/x86/x86/tsc.c (revision 358826) +++ sys/x86/x86/tsc.c (working copy) @@ -134,11 +134,7 @@ /* * Calculate TSC frequency using information from the CPUID leaf 0x15 - * 'Time Stamp Counter and Nominal Core Crystal Clock'. If leaf 0x15 - * is not functional, as it is on Skylake/Kabylake, try 0x16 'Processor - * Frequency Information'. Leaf 0x16 is described in the SDM as - * informational only, but if 0x15 did not work, and TSC calibration - * is disabled, it is the best we can get at all. It should still be + * 'Time Stamp Counter and Nominal Core Crystal Clock'. It should be * an improvement over the parsing of the CPU model name in * tsc_freq_intel(), when available. */ @@ -150,20 +146,10 @@ if (cpu_high < 0x15) return (false); do_cpuid(0x15, regs); - if (regs[0] != 0 && regs[1] != 0 && regs[2] != 0) { - tsc_freq = (uint64_t)regs[2] * regs[1] / regs[0]; - return (true); - } - - if (cpu_high < 0x16) + if (regs[0] == 0 || regs[1] == 0 || regs[2] == 0) return (false); - do_cpuid(0x16, regs); - if (regs[0] != 0) { - tsc_freq = (uint64_t)regs[0] * 1000000; - return (true); - } - - return (false); + tsc_freq = (uint64_t)regs[2] * regs[1] / regs[0]; + return (true); } static void