lkml.org 
[lkml]   [2022]   [Jun]   [7]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    /
    SubjectRe: [PATCH v6 14/38] KVM: nSVM: Keep track of Hyper-V hv_vm_id/hv_vp_id
    From
    Date
    On Mon, 2022-06-06 at 10:36 +0200, Vitaly Kuznetsov wrote:
    > Similar to nSVM, KVM needs to know L2's VM_ID/VP_ID and Partition
    > assist page address to handle L2 TLB flush requests.
    >
    > Signed-off-by: Vitaly Kuznetsov <vkuznets@redhat.com>
    > ---
    >  arch/x86/kvm/svm/hyperv.h | 16 ++++++++++++++++
    >  arch/x86/kvm/svm/nested.c |  2 ++
    >  2 files changed, 18 insertions(+)
    >
    > diff --git a/arch/x86/kvm/svm/hyperv.h b/arch/x86/kvm/svm/hyperv.h
    > index 7d6d97968fb9..8cf702fed7e5 100644
    > --- a/arch/x86/kvm/svm/hyperv.h
    > +++ b/arch/x86/kvm/svm/hyperv.h
    > @@ -9,6 +9,7 @@
    >  #include <asm/mshyperv.h>
    >  
    >  #include "../hyperv.h"
    > +#include "svm.h"
    >  
    >  /*
    >   * Hyper-V uses the software reserved 32 bytes in VMCB
    > @@ -32,4 +33,19 @@ struct hv_enlightenments {
    >   */
    >  #define VMCB_HV_NESTED_ENLIGHTENMENTS VMCB_SW
    >  
    > +static inline void nested_svm_hv_update_vm_vp_ids(struct kvm_vcpu *vcpu)
    > +{
    > +       struct vcpu_svm *svm = to_svm(vcpu);
    > +       struct hv_enlightenments *hve =
    > +               (struct hv_enlightenments *)svm->nested.ctl.reserved_sw;
    > +       struct kvm_vcpu_hv *hv_vcpu = to_hv_vcpu(vcpu);
    > +
    > +       if (!hv_vcpu)
    > +               return;
    > +
    > +       hv_vcpu->nested.pa_page_gpa = hve->partition_assist_page;
    > +       hv_vcpu->nested.vm_id = hve->hv_vm_id;
    > +       hv_vcpu->nested.vp_id = hve->hv_vp_id;
    > +}
    > +
    >  #endif /* __ARCH_X86_KVM_SVM_HYPERV_H__ */
    > diff --git a/arch/x86/kvm/svm/nested.c b/arch/x86/kvm/svm/nested.c
    > index 88da8edbe1e1..e8908cc56e22 100644
    > --- a/arch/x86/kvm/svm/nested.c
    > +++ b/arch/x86/kvm/svm/nested.c
    > @@ -811,6 +811,8 @@ int enter_svm_guest_mode(struct kvm_vcpu *vcpu, u64 vmcb12_gpa,
    >         if (kvm_vcpu_apicv_active(vcpu))
    >                 kvm_make_request(KVM_REQ_APICV_UPDATE, vcpu);
    >  
    > +       nested_svm_hv_update_vm_vp_ids(vcpu);
    > +
    >         return 0;
    >  }
    >  

    Reviewed-by: Maxim Levitsky <mlevitsk@redhat.com>

    Best regards,
    Maxim Levitsky

    \
     
     \ /
      Last update: 2022-06-07 11:37    [W:2.546 / U:0.128 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site