• Sean Christopherson's avatar
    x86/virt: Eat faults on VMXOFF in reboot flows · aec511ad
    Sean Christopherson authored
    Silently ignore all faults on VMXOFF in the reboot flows as such faults
    are all but guaranteed to be due to the CPU not being in VMX root.
    Because (a) VMXOFF may be executed in NMI context, e.g. after VMXOFF but
    before CR4.VMXE is cleared, (b) there's no way to query the CPU's VMX
    state without faulting, and (c) the whole point is to get out of VMX
    root, eating faults is the simplest way to achieve the desired behaior.
    
    Technically, VMXOFF can fault (or fail) for other reasons, but all other
    fault and failure scenarios are mode related, i.e. the kernel would have
    to magically end up in RM, V86, compat mode, at CPL>0, or running with
    the SMI Transfer Monitor active.  The kernel is beyond hosed if any of
    those scenarios are encountered; trying to do something fancy in the
    error path to handle them cleanly is pointless.
    
    Fixes: 1e993114
    
     ("x86: asm/virtext.h: add cpu_vmxoff() inline function")
    Reported-by: default avatarDavid P. Reed <dpreed@deepplum.com>
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarSean Christopherson <seanjc@google.com>
    Message-Id: <20201231002702.22237077
    
    -2-seanjc@google.com>
    Signed-off-by: default avatarPaolo Bonzini <pbonzini@redhat.com>
    aec511ad
virtext.h 2.94 KB