background image

Vol. 3C 26-25

VM ENTRIES

26.7 VM-ENTRY 

FAILURES 

DURING OR AFTER LOADING GUEST STATE

VM-entry failures due to the checks identified in Section 26.3.1 and failures during the MSR loading identified in 
Section 26.4 are treated differently from those that occur earlier in VM entry. In these cases, the following steps 
take place:
1. Information about the VM-entry failure is recorded in the VM-exit information fields:

— Exit  reason.

Bits 15:0 of this field contain the basic exit reason. It is loaded with a number indicating the general 

cause of the VM-entry failure. The following numbers are used:

33. VM-entry failure due to invalid guest state. A VM entry failed one of the checks identified in Section 

26.3.1.

34. VM-entry failure due to MSR loading. A VM entry failed in an attempt to load MSRs (see Section 

26.4).

41. VM-entry failure due to machine-check event. A machine-check event occurred during VM entry 

(see Section 26.8).

Bit 31 is set to 1 to indicate a VM-entry failure.

The remainder of the field (bits 30:16) is cleared.

— Exit qualification. This field is set based on the exit reason.

VM-entry failure due to invalid guest state. In most cases, the exit qualification is cleared to 0. The 

following non-zero values are used in the cases indicated:

1. Not used.
2. Failure was due to a problem loading the PDPTEs (see Section 26.3.1.6).
3. Failure was due to an attempt to inject a non-maskable interrupt (NMI) into a guest that is blocking 

events through the STI blocking bit in the interruptibility-state field. Such failures are implemen-
tation-specific (see Section 26.3.1.5)

4. Failure was due to an invalid VMCS link pointer (see Section 26.3.1.5).
VM-entry checks on guest-state fields may be performed in any order. Thus, an indication by exit

qualification of one cause does not imply that there are not also other errors. Different processors

may give different exit qualifications for the same VMCS.

VM-entry failure due to MSR loading. The exit qualification is loaded to indicate which entry in the 

VM-entry MSR-load area caused the problem (1 for the first entry, 2 for the second, etc.).

— All other VM-exit information fields are unmodified.

2. Processor state is loaded as would be done on a VM exit (see Section 27.5). If this results in 

[CR4.PAE & CR0.PG & ~IA32_EFER.LMA] = 1, page-directory-pointer-table entries (PDPTEs) may be checked 
and loaded (see Section 27.5.4).

3. The state of blocking by NMI is what it was before VM entry.
4. MSRs are loaded as specified in the VM-exit MSR-load area (see Section 27.6).
Although this process resembles that of a VM exit, many steps taken during a VM exit do not occur for these 
VM-entry failures:

Most VM-exit information fields are not updated (see step 1 above).

The valid bit in the VM-entry interruption-information field is not cleared.

The guest-state area is not modified.

No MSRs are saved into the VM-exit MSR-store area.

26.8 

MACHINE-CHECK EVENTS DURING VM ENTRY

If a machine-check event occurs during a VM entry, one of the following occurs: