• Sean Christopherson's avatar
    KVM: x86: Inject #UD on emulated XSETBV if XSAVES isn't enabled · 50b2d49b
    Sean Christopherson authored
    Inject #UD when emulating XSETBV if CR4.OSXSAVE is not set.  This also
    covers the "XSAVE not supported" check, as setting CR4.OSXSAVE=1 #GPs if
    XSAVE is not supported (and userspace gets to keep the pieces if it
    forces incoherent vCPU state).
    
    Add a comment to kvm_emulate_xsetbv() to call out that the CPU checks
    CR4.OSXSAVE before checking for intercepts.  AMD'S APM implies that #UD
    has priority (says that intercepts are checked before #GP exceptions),
    while Intel's SDM says nothing about interception priority.  However,
    testing on hardware shows that both AMD and Intel CPUs prioritize the #UD
    over interception.
    
    Fixes: 02d4160f ("x86: KVM: add xsetbv to the emulator")
    Cc: stable@vger.kernel.org
    Cc: Vitaly Kuznetsov <vkuznets@redhat.com>
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20220824033057.3576315-4-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    50b2d49b
x86.c 354 KB