Starting with Windows 8 or Windows Server 2012 or later, during the boot process, the operating system resets the TSC (TimeStampCounter, increments by 1 for each passed cycle) on CPU0 when it detects it to be equal or larger than 0x40000000000000. It does not reset the TSC of the other vCPUs and the resulting discrepancy between two vCPUs TSC values may result in the issues described under the Symptoms section. This only applies to virtual machine hardware version 10 as Windows resets the TSC on all CPUs on virtual machines with older hardware versions (which do not support hypervisor.cpuid.v2).
For virtual machines with legacy BIOS:
Rebooting Windows on virtual machines up to hardware version 10 (vmx-10) is done through a soft reset during which INIT is asserted. Unlike after a hard reset (assert of CPURST, PCIRST# and RSTDRV), operating systems should not expect the TSC to be reset to 0x0 after a soft reset. The default behavior of not resetting the TSCs upon a soft reset can be changed using the configuration option.
For virtual machines with EFI:
This is a known issue with the VMware EFI Firmware. Hard reset appears to be available in VMware EFI Firmware, but it does a soft reset.