lkml.org 
[lkml]   [2021]   [May]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.11 099/601] KVM: nSVM: Set the shadow root level to the TDP level for nested NPT
    Date
    From: Sean Christopherson <seanjc@google.com>

    commit a3322d5cd87fef5ec0037fd1b14068a533f9a60f upstream.

    Override the shadow root level in the MMU context when configuring
    NPT for shadowing nested NPT. The level is always tied to the TDP level
    of the host, not whatever level the guest happens to be using.

    Fixes: 096586fda522 ("KVM: nSVM: Correctly set the shadow NPT root level in its MMU role")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20210305011101.3597423-2-seanjc@google.com>
    Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
    Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
    ---
    arch/x86/kvm/mmu/mmu.c | 11 ++++++++---
    1 file changed, 8 insertions(+), 3 deletions(-)

    --- a/arch/x86/kvm/mmu/mmu.c
    +++ b/arch/x86/kvm/mmu/mmu.c
    @@ -4630,12 +4630,17 @@ void kvm_init_shadow_npt_mmu(struct kvm_
    struct kvm_mmu *context = &vcpu->arch.guest_mmu;
    union kvm_mmu_role new_role = kvm_calc_shadow_npt_root_page_role(vcpu);

    - context->shadow_root_level = new_role.base.level;
    -
    __kvm_mmu_new_pgd(vcpu, nested_cr3, new_role.base, false, false);

    - if (new_role.as_u64 != context->mmu_role.as_u64)
    + if (new_role.as_u64 != context->mmu_role.as_u64) {
    shadow_mmu_init_context(vcpu, context, cr0, cr4, efer, new_role);
    +
    + /*
    + * Override the level set by the common init helper, nested TDP
    + * always uses the host's TDP configuration.
    + */
    + context->shadow_root_level = new_role.base.level;
    + }
    }
    EXPORT_SYMBOL_GPL(kvm_init_shadow_npt_mmu);


    \
     
     \ /
      Last update: 2021-05-12 19:16    [W:2.115 / U:0.272 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site