• Sean Christopherson's avatar
    KVM: SVM: Require exact CPUID.0x1 match when stuffing EDX at INIT · 067a456d
    Sean Christopherson authored
    Do not allow an inexact CPUID "match" when querying the guest's CPUID.0x1
    to stuff EDX during INIT.  In the common case, where the guest CPU model
    is an AMD variant, allowing an inexact match is a nop since KVM doesn't
    emulate Intel's goofy "out-of-range" logic for AMD and Hygon.  If the
    vCPU model happens to be an Intel variant, an inexact match is possible
    if and only if the max CPUID leaf is precisely '0'. Aside from the fact
    that there's probably no CPU in existence with a single CPUID leaf, if
    the max CPUID leaf is '0', that means that CPUID.0.EAX is '0', and thus
    an inexact match for CPUID.0x1.EAX will also yield '0'.
    
    So, with lots of twisty logic, no functional change intended.
    Reviewed-by: default avatarReiji Watanabe <reijiw@google.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20210713163324.627647-6-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    067a456d
svm.c 125 KB