• Radim Krčmář's avatar
    KVM: x86: drop bogus MWAIT check · 346f48fa
    Radim Krčmář authored
    The check was added in some iteration while trying to fix a reported OS
    X on Core 2 bug, but that bug is elsewhere.
    
    The comment is misleading because the guest can call MWAIT with ECX = 0
    even if we enforce CPUID5_ECX_INTERRUPT_BREAK;  the call would have the
    exactly the same effect as if the host didn't have the feature.
    
    A problem is that a QEMU feature exposes CPUID5_ECX_INTERRUPT_BREAK on
    CPUs that do not support it.  Removing the check changes behavior on
    last Pentium 4 lines (Presler, Dempsey, and Tulsa, which had VMX and
    MONITOR while missing INTERRUPT_BREAK) when running a guest OS that uses
    MWAIT without checking for its presence (QEMU doesn't expose MONITOR).
    
    The only known OS that ignores the MONITOR flag is old Mac OS X and we
    allowed it to bug on Core 2 (MWAIT used to throw #UD and only that OS
    noticed), so we can save another 20 lines letting it bug on even older
    CPUs.  Alternatively, we can return MWAIT exiting by default and let
    userspace toggle it.
    Reviewed-by: default avatarAlexander Graf <agraf@suse.de>
    Acked-by: default avatarBorislav Petkov <bp@suse.de>
    Acked-by: default avatarMichael S. Tsirkin <mst@redhat.com>
    Signed-off-by: default avatarRadim Krčmář <rkrcmar@redhat.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    346f48fa
x86.h 6.86 KB