From: Peter Fang Separate the logic that returns GetQuote to userspace so that tdx_get_quote() can be extended to support in-kernel quote generation. No functional change intended. Signed-off-by: Peter Fang Signed-off-by: Xu Yilun --- arch/x86/kvm/vmx/tdx.c | 25 ++++++++++++++++--------- 1 file changed, 16 insertions(+), 9 deletions(-) diff --git a/arch/x86/kvm/vmx/tdx.c b/arch/x86/kvm/vmx/tdx.c index ed12805bbb44..9f7c39e0d4b5 100644 --- a/arch/x86/kvm/vmx/tdx.c +++ b/arch/x86/kvm/vmx/tdx.c @@ -1524,6 +1524,20 @@ static int tdx_complete_simple(struct kvm_vcpu *vcpu) return 1; } +static int tdx_get_quote_user(struct kvm_vcpu *vcpu, u64 gpa, u64 size) +{ + vcpu->run->exit_reason = KVM_EXIT_TDX; + vcpu->run->tdx.flags = 0; + vcpu->run->tdx.nr = TDVMCALL_GET_QUOTE; + vcpu->run->tdx.get_quote.ret = TDVMCALL_STATUS_SUBFUNC_UNSUPPORTED; + vcpu->run->tdx.get_quote.gpa = gpa; + vcpu->run->tdx.get_quote.size = size; + + vcpu->arch.complete_userspace_io = tdx_complete_simple; + + return 0; +} + static int tdx_get_quote(struct kvm_vcpu *vcpu) { struct vcpu_tdx *tdx = to_tdx(vcpu); @@ -1536,16 +1550,9 @@ static int tdx_get_quote(struct kvm_vcpu *vcpu) return 1; } - vcpu->run->exit_reason = KVM_EXIT_TDX; - vcpu->run->tdx.flags = 0; - vcpu->run->tdx.nr = TDVMCALL_GET_QUOTE; - vcpu->run->tdx.get_quote.ret = TDVMCALL_STATUS_SUBFUNC_UNSUPPORTED; - vcpu->run->tdx.get_quote.gpa = gpa & ~gfn_to_gpa(kvm_gfn_direct_bits(tdx->vcpu.kvm)); - vcpu->run->tdx.get_quote.size = size; - - vcpu->arch.complete_userspace_io = tdx_complete_simple; + gpa &= ~gfn_to_gpa(kvm_gfn_direct_bits(vcpu->kvm)); - return 0; + return tdx_get_quote_user(vcpu, gpa, size); } static int tdx_setup_event_notify_interrupt(struct kvm_vcpu *vcpu) -- 2.25.1