I try to run windows 2016 with GPU so I enabled 'kvm hidden' feature and boot windows 2016 with UEFI.
When I test live migration, guest just lost response and only reboot could recover it.
I did some debug
kvm trace shows frequent msr_read of HV_X64_MSR_TIME_REF_COUNT:
<...>-41064 [000] .... 168733.114930: kvm_msr: msr_read 40000020 = 0xfb3c08a54
and the perf result by 'perf kvm --host stat live' shows too many MSR_READ operations:
13:02:10.174121Analyze events for all VMs, all VCPUs:
VM-EXIT Samples Samples% Time% Min Time Max Time Avg time
MSR_READ 6022 78.14% 74.10% 0.71us 21778.22us 42.52us ( +- 17.16% )
EXTERNAL_INTERRUPT 1494 19.38% 21.65% 0.53us 12810.58us 50.08us ( +- 29.22% )
IO_INSTRUCTION 126 1.63% 1.16% 23.80us 51.45us 31.73us ( +- 1.56% )
APIC_WRITE 26 0.34% 0.06% 3.23us 10.96us 8.39us ( +- 4.81% )
EOI_INDUCED 20 0.26% 0.02% 1.93us 3.27us 2.63us ( +- 3.21% )
EPT_MISCONFIG 19 0.25% 3.01% 29.30us 9795.61us 548.07us ( +- 93.74% )
Total Samples:7707, Total events handled time:345545.97us.
So I removed hv_time from the command (in libvirt, it is a clock named 'hypervclock') and then the migration
nerver failed
Does anyone know why there are so many timestamp related call?
Thanks
-AlanJager