• Sean Christopherson's avatar
    KVM: x86: Add support for reverse CPUID lookup of scattered features · 4e66c0cb
    Sean Christopherson authored
    Introduce a scheme that allows KVM's CPUID magic to support features
    that are scattered in the kernel's feature words.  To advertise and/or
    query guest support for CPUID-based features, KVM requires the bit
    number of an X86_FEATURE_* to match the bit number in its associated
    CPUID entry.  For scattered features, this does not hold true.
    
    Add a framework to allow defining KVM-only words, stored in
    kvm_cpu_caps after the shared kernel caps, that can be used to gather
    the scattered feature bits by translating X86_FEATURE_* flags into their
    KVM-defined feature.
    
    Note, because reverse_cpuid_check() effectively forces kvm_cpu_caps
    lookups to be resolved at compile time, there is no runtime cost for
    translating from kernel-defined to kvm-defined features.
    
    More details here:  https://lkml.kernel.org/r/X/jxCOLG+HUO4QlZ@google.comSigned-off-by: default avatarSean Christopherson <seanjc@google.com>
    Signed-off-by: default avatarKai Huang <kai.huang@intel.com>
    Message-Id: <16cad8d00475f67867fb36701fc7fb7c1ec86ce1.1618196135.git.kai.huang@intel.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    4e66c0cb
cpuid.c 30.7 KB