Detect CPU type before asking VMWare for TSC freq
This allows us to set tsc_is_invariant and select appropriately fenced versions of RDTSC based on the CPU type. Reviewed by: markj Sponsored by: https://www.patreon.com/cperciva
This commit is contained in:
parent
a727d9531a
commit
fd980feb57
@ -134,7 +134,6 @@ tsc_freq_vmware(void)
|
||||
if (regs[1] != UINT_MAX)
|
||||
tsc_freq = regs[0] | ((uint64_t)regs[1] << 32);
|
||||
}
|
||||
tsc_is_invariant = 1;
|
||||
tsc_early_calib_exact = 1;
|
||||
}
|
||||
|
||||
@ -268,11 +267,6 @@ probe_tsc_freq(void)
|
||||
tsc_perf_stat = 1;
|
||||
}
|
||||
|
||||
if (vm_guest == VM_GUEST_VMWARE) {
|
||||
tsc_freq_vmware();
|
||||
return;
|
||||
}
|
||||
|
||||
switch (cpu_vendor_id) {
|
||||
case CPU_VENDOR_AMD:
|
||||
case CPU_VENDOR_HYGON:
|
||||
@ -311,6 +305,11 @@ probe_tsc_freq(void)
|
||||
break;
|
||||
}
|
||||
|
||||
if (vm_guest == VM_GUEST_VMWARE) {
|
||||
tsc_freq_vmware();
|
||||
return;
|
||||
}
|
||||
|
||||
if (tsc_freq_cpuid(&tsc_freq)) {
|
||||
/*
|
||||
* If possible, use the value obtained from CPUID as the initial
|
||||
|
Loading…
x
Reference in New Issue
Block a user