1
0
mirror of https://git.FreeBSD.org/src.git synced 2024-12-20 11:11:24 +00:00

Disable TSC usage inside SMP VM environments. On my VMware ESXi 4.1

environment with a core i5-2500K, operation in this mode causes timeouts
from the mpt driver.  Switching to the ACPI-fast timer resolves this issue.
Switching the VM back to single CPU mode also works, which is why I have
not disabled the TSC in that mode.

I did not test with KVM or other VM environments, but I am being cautious
and assuming that the TSC is not reliable in SMP mode there as well.

Reviewed by:	kib
Approved by:	re (kib)
MFC after:	Not applicable, the timecounter code is new for 9.x
This commit is contained in:
Mike Silbersack 2011-08-22 03:10:29 +00:00
parent bcc25b7ea2
commit 5cf8ac1bc2
Notes: svn2git 2020-12-20 02:59:44 +00:00
svn path=/head/; revision=225069

View File

@ -464,11 +464,16 @@ init_TSC_tc(void)
* synchronized. If the user is sure that the system has synchronized
* TSCs, set kern.timecounter.smp_tsc tunable to a non-zero value.
* We also limit the frequency even lower to avoid "temporal anomalies"
* as much as possible.
* as much as possible. The TSC seems unreliable in virtualized SMP
* environments, so it is set to a negative quality in those cases.
*/
if (smp_cpus > 1) {
tsc_timecounter.tc_quality = test_smp_tsc();
max_freq >>= 8;
if (vm_guest != 0) {
tsc_timecounter.tc_quality = -100;
} else {
tsc_timecounter.tc_quality = test_smp_tsc();
max_freq >>= 8;
}
} else
#endif
if (tsc_is_invariant)