On Tue, Feb 11, 2025, Binbin Wu wrote: > --- > arch/x86/kvm/vmx/tdx.c | 19 +++++++++++++++++++ > 1 file changed, 19 insertions(+) > > diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c > index 420ee492e919..daa49f2ee2b3 100644 > --- a/arch/x86/kvm/vmx/tdx.c > +++ b/arch/x86/kvm/vmx/tdx.c > @@ -964,6 +964,23 @@ fastpath_t tdx_vcpu_run(struct kvm_vcpu *vcpu, bool force_immediate_exit) > return tdx_exit_handlers_fastpath(vcpu); > } > > +static int complete_hypercall_exit(struct kvm_vcpu *vcpu) > +{ > + tdvmcall_set_return_code(vcpu, vcpu->run->hypercall.ret); > + return 1; > +} > + > +static int tdx_emulate_vmcall(struct kvm_vcpu *vcpu) > +{ > + kvm_rax_write(vcpu, to_tdx(vcpu)->vp_enter_args.r10); > + kvm_rbx_write(vcpu, to_tdx(vcpu)->vp_enter_args.r11); > + kvm_rcx_write(vcpu, to_tdx(vcpu)->vp_enter_args.r12); > + kvm_rdx_write(vcpu, to_tdx(vcpu)->vp_enter_args.r13); > + kvm_rsi_write(vcpu, to_tdx(vcpu)->vp_enter_args.r14); > + > + return __kvm_emulate_hypercall(vcpu, 0, complete_hypercall_exit); Thanks for persevering through all the ideas and churn, I like how this turned out!