There is the added complication that *none* of the VMCS exit information fields are valid when vmx->fail is true. However, that oversight affects more than just this function, so I propose to address it separately. On Mon, May 22, 2017 at 7:20 PM, Xiao Guangrong <guangrong.xiao@xxxxxxxxx> wrote: > > Right, this is exactly what i wanted to say. :) > > > On 05/23/2017 12:04 AM, Jim Mattson wrote: >> >> 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"? >>> >