24-2 Vol. 3C
VIRTUAL MACHINE CONTROL STRUCTURES
Figure 24-1 illustrates the different states of a VMCS. It uses “X” to refer to the VMCS and “Y” to refer to any other
VMCS. Thus: “VMPTRLD X” always makes X current and active; “VMPTRLD Y” always makes X not current (because
it makes Y current); VMLAUNCH makes the launch state of X “launched” if X was current and its launch state was
“clear”; and VMCLEAR X always makes X inactive and not current and makes its launch state “clear”.
The figure does not illustrate operations that do not modify the VMCS state relative to these parameters (e.g.,
execution of VMPTRLD X when X is already current). Note that VMCLEAR X makes X “inactive, not current, and
clear,” even if X’s current state is not defined (e.g., even if X has not yet been initialized). See Section 24.11.3.
Because a shadow VMCS (see Section 24.10) cannot be used for VM entry, the launch state of a shadow VMCS is
not meaningful. Figure 24-1 does not illustrate all the ways in which a shadow VMCS may be made active.
24.2
FORMAT OF THE VMCS REGION
A VMCS region comprises up to 4-KBytes.
1
The format of a VMCS region is given in Table 24-1.
The first 4 bytes of the VMCS region contain the VMCS revision identifier at bits 30:0.
2
Processors that maintain
VMCS data in different formats (see below) use different VMCS revision identifiers. These identifiers enable soft-
Figure 24-1. States of VMCS X
Table 24-1. Format of the VMCS Region
Byte Offset
Contents
0
Bits 30:0: VMCS revision identifier
Bit 31: shadow-VMCS indicator (see Section 24.10)
4
VMX-abort indicator
8
VMCS data (implementation-specific format)
1. The exact size is implementation specific and can be determined by consulting the VMX capability MSR IA32_VMX_BASIC to deter-
mine the size of the VMCS region (see Appendix A.1).
Active
Not Current
Clear
Active
Current
Clear
Inactive
Not Current
Clear
Active
Not Current
Launched
Active
Current
Launched
V
M
P
TR
LD
X
V
M
C
LE
A
R
X
VMLAUNCH
VM
CL
E
AR X
VMCLEAR X
VMCLEAR X
VMCLEAR X
Anything
Else
VM
PT
RLD
X
VM
PT
RLD
Y
VM
PT
RLD
X
VM
PT
RLD
Y