lkml.org 
[lkml]   [2022]   [Apr]   [15]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    Date
    SubjectRe: [RFC PATCH v5 096/104] KVM: TDX: Handle TDX PV rdmsr hypercall
    From
    On 3/4/22 20:49, isaku.yamahata@intel.com wrote:
    > From: Isaku Yamahata <isaku.yamahata@intel.com>
    >
    > Wire up TDX PV rdmsr hypercall to the KVM backend function.
    >
    > Signed-off-by: Isaku Yamahata <isaku.yamahata@intel.com>
    > ---
    > 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 cec2660206bd..dd7aaa28bf3a 100644
    > --- a/arch/x86/kvm/vmx/tdx.c
    > +++ b/arch/x86/kvm/vmx/tdx.c
    > @@ -1124,6 +1124,23 @@ static int tdx_emulate_mmio(struct kvm_vcpu *vcpu)
    > return 1;
    > }
    >
    > +static int tdx_emulate_rdmsr(struct kvm_vcpu *vcpu)
    > +{
    > + u32 index = tdvmcall_p1_read(vcpu);
    > + u64 data;
    > +
    > + if (kvm_get_msr(vcpu, index, &data)) {
    > + trace_kvm_msr_read_ex(index);
    > + tdvmcall_set_return_code(vcpu, TDG_VP_VMCALL_INVALID_OPERAND);
    > + return 1;
    > + }
    > + trace_kvm_msr_read(index, data);
    > +
    > + tdvmcall_set_return_code(vcpu, TDG_VP_VMCALL_SUCCESS);
    > + tdvmcall_set_return_val(vcpu, data);
    > + return 1;
    > +}
    > +
    > static int handle_tdvmcall(struct kvm_vcpu *vcpu)
    > {
    > struct vcpu_tdx *tdx = to_tdx(vcpu);
    > @@ -1143,6 +1160,8 @@ static int handle_tdvmcall(struct kvm_vcpu *vcpu)
    > return tdx_emulate_io(vcpu);
    > case EXIT_REASON_EPT_VIOLATION:
    > return tdx_emulate_mmio(vcpu);
    > + case EXIT_REASON_MSR_READ:
    > + return tdx_emulate_rdmsr(vcpu);
    > default:
    > break;
    > }

    Reviewed-by: Paolo Bonzini <pbonzini@redhat.com>

    and feel free to squash with the wrmsr one.

    Paolo

    \
     
     \ /
      Last update: 2022-04-15 17:09    [W:3.012 / U:0.060 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site