• Sean Christopherson's avatar
    KVM: x86: Get active PCID only when writing a CR3 value · e83bc09c
    Sean Christopherson authored
    Retrieve the active PCID only when writing a guest CR3 value, i.e. don't
    get the PCID when using EPT or NPT.  The PCID is especially problematic
    for EPT as the bits have different meaning, and so the PCID and must be
    manually stripped, which is annoying and unnecessary.  And on VMX,
    getting the active PCID also involves reading the guest's CR3 and
    CR4.PCIDE, i.e. may add pointless VMREADs.
    
    Opportunistically rename the pgd/pgd_level params to root_hpa and
    root_level to better reflect their new roles.  Keep the function names,
    as "load the guest PGD" is still accurate/correct.
    
    Last, and probably least, pass root_hpa as a hpa_t/u64 instead of an
    unsigned long.  The EPTP holds a 64-bit value, even in 32-bit mode, so
    in theory EPT could support HIGHMEM for 32-bit KVM.  Never mind that
    doing so would require changing the MMU page allocators and reworking
    the MMU to use kmap().
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20210305183123.3978098-2-seanjc@google.com>
    Reviewed-by: default avatarVitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    e83bc09c
vmx.c 222 KB