• Sean Christopherson's avatar
    x86/cpufeatures: Add flag to track whether MSR IA32_FEAT_CTL is configured · 85c17291
    Sean Christopherson authored
    Add a new feature flag, X86_FEATURE_MSR_IA32_FEAT_CTL, to track whether
    IA32_FEAT_CTL has been initialized.  This will allow KVM, and any future
    subsystems that depend on IA32_FEAT_CTL, to rely purely on cpufeatures
    to query platform support, e.g. allows a future patch to remove KVM's
    manual IA32_FEAT_CTL MSR checks.
    
    Various features (on platforms that support IA32_FEAT_CTL) are dependent
    on IA32_FEAT_CTL being configured and locked, e.g. VMX and LMCE.  The
    MSR is always configured during boot, but only if the CPU vendor is
    recognized by the kernel.  Because CPUID doesn't incorporate the current
    IA32_FEAT_CTL value in its reporting of relevant features, it's possible
    for a feature to be reported as supported in cpufeatures but not truly
    enabled, e.g. if the CPU supports VMX but the kernel doesn't recognize
    the CPU.
    
    As a result, without the flag, KVM would see VMX as supported even if
    IA32_FEAT_CTL hasn't been initialized, and so would need to manually
    read the MSR and check the various enabling bits to avoid taking an
    unexpected #GP on VMXON.
    Signed-off-by: default avatarSean Christopherson <sean.j.christopherson@intel.com>
    Signed-off-by: default avatarBorislav Petkov <bp@suse.de>
    Link: https://lkml.kernel.org/r/20191221044513.21680-14-sean.j.christopherson@intel.com
    85c17291
cpufeatures.h 25.4 KB