• Sean Christopherson's avatar
    KVM: nVMX: Unconditionally validate CR3 during nested transitions · 0cc69204
    Sean Christopherson authored
    Unconditionally check the validity of the incoming CR3 during nested
    VM-Enter/VM-Exit to avoid invoking kvm_read_cr3() in the common case
    where the guest isn't using PAE paging.  If vmcs.GUEST_CR3 hasn't yet
    been cached (common case), kvm_read_cr3() will trigger a VMREAD.  The
    VMREAD (~30 cycles) alone is likely slower than nested_cr3_valid()
    (~5 cycles if vcpu->arch.maxphyaddr gets a cache hit), and the poor
    exchange only gets worse when retpolines are enabled as the call to
    kvm_x86_ops.cache_reg() will incur a retpoline (60+ cycles).
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Message-Id: <20200502043234.12481-3-sean.j.christopherson@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    0cc69204
nested.c 198 KB