lkml.org 
[lkml]   [2021]   [Jul]   [12]   [last100]   RSS Feed
Views: [wrap][no wrap]   [headers]  [forward] 
 
Messages in this thread
    Patch in this message
    /
    From
    Subject[PATCH 5.13 076/800] KVM: x86/mmu: Remove broken WARN that fires on 32-bit KVM w/ nested EPT
    Date
    From: Sean Christopherson <seanjc@google.com>

    commit f0d4379087d8a83f478b371ff7786e8df0cc2314 upstream.

    Remove a misguided WARN that attempts to detect the scenario where using
    a special A/D tracking flag will set reserved bits on a non-MMIO spte.
    The WARN triggers false positives when using EPT with 32-bit KVM because
    of the !64-bit clause, which is just flat out wrong. The whole A/D
    tracking goo is specific to EPT, and one of the big selling points of EPT
    is that EPT is decoupled from the host's native paging mode.

    Drop the WARN instead of trying to salvage the check. Keeping a check
    specific to A/D tracking bits would essentially regurgitate the same code
    that led to KVM needed the tracking bits in the first place.

    A better approach would be to add a generic WARN on reserved bits being
    set, which would naturally cover the A/D tracking bits, work for all
    flavors of paging, and be self-documenting to some extent.

    Fixes: 8a406c89532c ("KVM: x86/mmu: Rename and document A/D scheme for TDP SPTEs")
    Cc: stable@vger.kernel.org
    Signed-off-by: Sean Christopherson <seanjc@google.com>
    Message-Id: <20210622175739.3610207-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/spte.c | 7 -------
    1 file changed, 7 deletions(-)

    --- a/arch/x86/kvm/mmu/spte.c
    +++ b/arch/x86/kvm/mmu/spte.c
    @@ -103,13 +103,6 @@ int make_spte(struct kvm_vcpu *vcpu, uns
    spte |= SPTE_TDP_AD_WRPROT_ONLY_MASK;

    /*
    - * Bits 62:52 of PAE SPTEs are reserved. WARN if said bits are set
    - * if PAE paging may be employed (shadow paging or any 32-bit KVM).
    - */
    - WARN_ON_ONCE((!tdp_enabled || !IS_ENABLED(CONFIG_X86_64)) &&
    - (spte & SPTE_TDP_AD_MASK));
    -
    - /*
    * For the EPT case, shadow_present_mask is 0 if hardware
    * supports exec-only page table entries. In that case,
    * ACC_USER_MASK and shadow_user_mask are used to represent

    \
     
     \ /
      Last update: 2021-07-12 10:41    [W:4.069 / U:0.036 seconds]
    ©2003-2020 Jasper Spaans|hosted at Digital Ocean and TransIP|Read the blog|Advertise on this site