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

Table Of Contents
23-38 Vol. 3
VM EXITS
If any MSR is being loaded in such a way that would architecturally require a TLB
flush, the TLBs are updated so that, after VM exit, the logical processor does not use
any translations that were cached before the transition.
23.7 VMX ABORTS
A problem encountered during a VM exit leads to a VMX abort. A VMX abort takes a
logical processor into a shutdown state as described below.
A VMX abort does not modify the VMCS data in the VMCS region of any active VMCS.
The contents of these data are thus suspect after the VMX abort.
On a VMX abort, a logical processor saves a nonzero 32-bit VMX-abort indicator field
at byte offset 4 in the VMCS region of the VMCS whose misconfiguration caused the
failure (see Section 20.2). The following values are used:
1. There was a failure in saving guest MSRs (see Section 23.4).
2. Host checking of the page-directory-pointer-table entries (PDPTEs) failed (see
Section 23.5.4).
3. The current VMCS has been corrupted (through writes to the corresponding
VMCS region) in such a way that the logical processor cannot complete the
VM exit properly.
4. There was a failure on loading host MSRs (see Section 23.6).
5. There was a machine check during VM exit (see Section 23.8).
6. The logical processor was in IA-32e mode before the VM exit and the “host
address-space size” VM-entry control was 0 (see Section 23.5).
Some of these causes correspond to failures during the loading of state from the
host-state area. Because the loading of such state may be done in any order (see
Section 23.5) a VM exit that might lead to a VMX abort for multiple reasons (for
example, the current VMCS may be corrupt and the host PDPTEs might not be prop-
erly configured). In such cases, the VMX-abort indicator could correspond to any one
of those reasons.
A logical processor never reads the VMX-abort indicator in a VMCS region and writes
it only with one of the non-zero values mentioned above. The VMX-abort indicator
allows software on one logical processor to diagnose the VMX-abort on another. For
this reason, it is recommended that software running in VMX root operation zero the
VMX-abort indicator in the VMCS region of any VMCS that it uses.
1. Note the following about processors that support Intel 64 architecture. If CR0.PG = 1, WRMSR to
the IA32_EFER MSR causes a general-protection exception if it would modify the LME bit. Since
CR0.PG is always 1 in VMX operation, the IA32_EFER MSR should not be included in the VM-exit
MSR-load area for the purpose of modifying the LME bit.