• A
    KVM: move and fix substitue search for missing CPUID entries · bd22f5cf
    Andre Przywara 提交于
    If KVM cannot find an exact match for a requested CPUID leaf, the
    code will try to find the closest match instead of simply confessing
    it's failure.
    The implementation was meant to satisfy the CPUID specification, but
    did not properly check for extended and standard leaves and also
    didn't account for the index subleaf.
    Beside that this rule only applies to CPUID intercepts, which is not
    the only user of the kvm_find_cpuid_entry() function.
    
    So fix this algorithm and call it from kvm_emulate_cpuid().
    This fixes a crash of newer Linux kernels as KVM guests on
    AMD Bulldozer CPUs, where bogus values were returned in response to
    a CPUID intercept.
    Signed-off-by: NAndre Przywara <andre.przywara@amd.com>
    Signed-off-by: NAvi Kivity <avi@redhat.com>
    bd22f5cf
x86.c 157.4 KB