Ah. I had assumed that vmx->exit_reason recorded ony the basic exit reason, since all of the EXIT_REASON macros have bit 31 stripped. The check at the very beginning of vmx_complete_atomic_exit is therefore wrong, since EXIT_REASON_MCE_DURING_VMENTRY (41) will never be seen in the exit reason field of the VMCS. If a machine check occurs during VM-entry, the exit reason is 0x80000029, not 41. On Mon, May 22, 2017 at 1:26 AM, Xiao Guangrong <guangrong.xiao@xxxxxxxxx> wrote: > > > On 05/19/2017 07:02 AM, Jim Mattson wrote: >> >> When bit 31 of the exit reason is set to indicate a VM-entry failure, >> only the exit reason and exit qualification fields are set. All other >> VM-exit information fields, including "VM-exit interruption >> information," are unmodified. > > > This log does not reflects what it is doing. The case that > exit-reason.bit31 = 1 is skipped by the check at the very beginning of > vmx_complete_atomic_exit(). > > Maybe what you want to say is just "exit_intr_info is not valid if vmx > exit is caused by EXIT_REASON_MCE_DURING_VMENTRY"? >