On 3/24/22 12:24, Paolo Bonzini wrote:
That said, the VMware kbase does paint a slightly different picture.  It implies that starting with hardware version 11 rebooting Windows is done through a hard reset instead of INIT.  I'm not sure how that would be done, but in the meanwhile our fix should take care of do_cpu_init as well.

Ok, so here are my findings:

- Windows resets the system by writing 0xFE to port 0x64. This is a hard reset on QEMU, but presumably it was a soft reset (INIT) on VMware until version 10.

- QEMU _does_ try to write 0 to the TSC on hard reset. But KVM special cases 0 as "somebody is trying to hot-plug a new CPU" and wants to help out, so it keeps the CPU synchronized with the previous TSC.

So this is a pretty clear-cut QEMU bug. It can be fixed by e.g. writing 1 to the TSC instead of 0.

Paolo


Reply via email to