• Jim Mattson's avatar
    kvm: x86: Sink cpuid update into vendor-specific set_cr4 functions · 2259c17f
    Jim Mattson authored
    On emulated VM-entry and VM-exit, update the CPUID bits that reflect
    CR4.OSXSAVE and CR4.PKE.
    
    This fixes a bug where the CPUID bits could continue to reflect L2 CR4
    values after emulated VM-exit to L1. It also fixes a related bug where
    the CPUID bits could continue to reflect L1 CR4 values after emulated
    VM-entry to L2. The latter bug is mainly relevant to SVM, wherein
    CPUID is not a required intercept. However, it could also be relevant
    to VMX, because the code to conditionally update these CPUID bits
    assumes that the guest CPUID and the guest CR4 are always in sync.
    
    Fixes: 8eb3f87d ("KVM: nVMX: fix guest CR4 loading when emulating L2 to L1 exit")
    Fixes: 2acf923e ("KVM: VMX: Enable XSAVE/XRSTOR for guest")
    Fixes: b9baba86 ("KVM, pkeys: expose CPUID/CR4 to guest")
    Reported-by: default avatarAbhiroop Dabral <adabral@paloaltonetworks.com>
    Signed-off-by: default avatarJim Mattson <jmattson@google.com>
    Reviewed-by: default avatarRicardo Koller <ricarkol@google.com>
    Reviewed-by: default avatarPeter Shier <pshier@google.com>
    Cc: Haozhong Zhang <haozhong.zhang@intel.com>
    Cc: Dexuan Cui <dexuan.cui@intel.com>
    Cc: Huaitong Han <huaitong.han@intel.com>
    Message-Id: <20201029170648.483210-1-jmattson@google.com>
    2259c17f
vmx.c 222 KB