Intel 64 and IA-32 Architectures Software Developers Manual Volume 3B, System Programming Guide Part 2

Table Of Contents
23-4 Vol. 3
VM EXITS
exception record if a VM exit or triple fault occurs before an event handler
is reached.
If the “virtual NMIs” VM-execution control is 1, VM entry injects an NMI, and
delivery of the NMI causes a nested exception, double fault, task switch, or APIC
access that causes a VM exit, virtual-NMI blocking is in effect before the VM exit
commences.
If a VM exit results from a fault, EPT violation, or EPT misconfiguration
encountered during execution of IRET and the “NMI exiting” VM-execution
control is 0, any blocking by NMI is cleared before the VM exit commences.
However, the previous state of blocking by NMI may be recorded in the VM-exit
interruption-information field; see Section 23.2.2.
If a VM exit results from a fault, EPT violation, or EPT misconfiguration
encountered during execution of IRET and the “virtual NMIs” VM-execution
control is 1, virtual-NMI blocking is cleared before the VM exit commences.
However, the previous state of virtual-NMI blocking may be recorded in the
VM-exit interruption-information field; see Section 23.2.2.
Suppose that a VM exit is caused directly by an x87 FPU Floating-Point Error
(#MF) or by any of the following events if the event was unblocked due to (and
given priority over) an x87 FPU Floating-Point Error: an INIT signal, an external
interrupt, an NMI, an SMI; or a machine-check exception. In these cases, there
is no blocking by STI or by MOV SS when the VM exit commences.
Normally, a last-branch record may be made when an event is delivered through
the IDT. However, if such an event results in a VM exit before delivery is
complete, no last-branch record is made.
If machine-check exception results in a VM exit, processor state is suspect and
may result in suspect state being saved to the guest-state area. A VM monitor
should consult the RIPV and EIPV bits in the IA32_MCG_STATUS MSR before
resuming a guest that caused a VM exit resulting from a machine-check
exception.
If a VM exit results from a fault, APIC access (see Section 21.2), EPT violation, or
EPT misconfiguration encountered while executing an instruction, data
breakpoints due to that instruction may have been recognized and information
about them may be saved in the pending debug exceptions field (see Section
23.3.4).
The following VM exits are considered to happen after an instruction is executed:
VM exits resulting from debug traps (single-step, I/O breakpoints, and data
breakpoints).
VM exits resulting from debug exceptions whose recognition was delayed by
blocking by MOV SS.
VM exits resulting from some machine-check exceptions.
Trap-like VM exits due to execution of MOV to CR8 when the “CR8-load
exiting” VM-execution control is 0 and the “use TPR shadow” VM-execution