Message ID | b28fcb79c5fbc219b6664f7239215360c5fda04d.1625704981.git.isaku.yamahata@intel.com (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | TDX support | expand |
On 7/7/21 7:54 PM, isaku.yamahata@gmail.com wrote: > From: Isaku Yamahata <isaku.yamahata@intel.com> > > Make kvm_synchronize_all_tsc() nop for TD-guest. s/nop/noop > > TDX module specification, 9.11.1 TSC Virtualization This appears in 9.12.1 of the latest revision as of this writing. https://software.intel.com/content/dam/develop/external/us/en/documents/tdx-module-1eas-v0.85.039.pdf > "Virtual TSC values are consistent among all the TD;s VCPUs at the s/TD;s/TDs > level suppored by the CPU". s/suppored/supported > There is no need for qemu to synchronize tsc and VMM can't access > to guest TSC. Actually do_kvm_synchronize_tsc() hits assert due to > failure to write to guest tsc. > >> qemu/target/i386/kvm.c:235: kvm_get_tsc: Assertion `ret == 1' failed. > > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com> Reviewed-by: Connor Kuehl <ckuehl@redhat.com>
diff --git a/target/i386/kvm/kvm.c b/target/i386/kvm/kvm.c index c29cb420a1..ecb1714920 100644 --- a/target/i386/kvm/kvm.c +++ b/target/i386/kvm/kvm.c @@ -254,7 +254,7 @@ void kvm_synchronize_all_tsc(void) { CPUState *cpu; - if (kvm_enabled()) { + if (kvm_enabled() && vm_type != KVM_X86_TDX_VM) { CPU_FOREACH(cpu) { run_on_cpu(cpu, do_kvm_synchronize_tsc, RUN_ON_CPU_NULL); }