• Paul Durrant's avatar
    KVM: x86: Make sure KVM_CPUID_FEATURES really are KVM_CPUID_FEATURES · 760849b1
    Paul Durrant authored
    Currently when kvm_update_cpuid_runtime() runs, it assumes that the
    KVM_CPUID_FEATURES leaf is located at 0x40000001. This is not true,
    however, if Hyper-V support is enabled. In this case the KVM leaves will
    be offset.
    
    This patch introdues as new 'kvm_cpuid_base' field into struct
    kvm_vcpu_arch to track the location of the KVM leaves and function
    kvm_update_kvm_cpuid_base() (called from kvm_set_cpuid()) to locate the
    leaves using the 'KVMKVMKVM\0\0\0' signature (which is now given a
    definition in kvm_para.h). Adjustment of KVM_CPUID_FEATURES will hence now
    target the correct leaf.
    
    NOTE: A new for_each_possible_hypervisor_cpuid_base() macro is intoduced
          into processor.h to avoid having duplicate code for the iteration
          over possible hypervisor base leaves.
    Signed-off-by: default avatarPaul Durrant <pdurrant@amazon.com>
    Message-Id: <20211105095101.5384-3-pdurrant@amazon.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    760849b1
cpuid.c 34.3 KB