Specifications
Intel
®
64 and IA-32 Architectures Software Developer’s Manual Documentation Changes 263
Documentation Changes
The VMPTRST instruction stores the address of the logical processor’s current VMCS into
a specified memory location (it stores the value FFFFFFFF_FFFFFFFFH if there is no
current VMCS).
The launch state of a VMCS determines which VM-entry instruction should be used with
that VMCS: the VMLAUNCH instruction requires a VMCS whose launch state is “clear”;
the VMRESUME instruction requires a VMCS whose launch state is “launched”. A logical
processor maintains a VMCS’s launch state in the corresponding VMCS region. The
following items describe how a logical processor manages the launch state of a VMCS:
• If the launch state of the current VMCS is “clear”, successful execution of the
VMLAUNCH instruction changes the launch state to “launched”.
• The memory operand of the VMCLEAR instruction is the address of a VMCS. After
execution of the instruction, the launch state of that VMCS is “clear”.
• There are no other ways to modify the launch state of a VMCS (it cannot be modified
using VMWRITE) and there is no direct way to discover it (it cannot be read using
VMREAD).
Figure 21-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 21.11.