background image

Vol. 3C 30-11

VMX INSTRUCTION REFERENCE

VMCLEAR—Clear Virtual-Machine Control Structure

Description

This instruction applies to the VMCS whose VMCS region resides at the physical address contained in the instruc-
tion operand. The instruction ensures that VMCS data for that VMCS (some of these data may be currently main-
tained on the processor) are copied to the VMCS region in memory. It also initializes parts of the VMCS region (for 
example, it sets the launch state of that VMCS to clear). See Chapter 24, “Virtual-Machine Control Structures”. 
The operand of this instruction is always 64 bits and is always in memory. If the operand is the current-VMCS 
pointer, then that pointer is made invalid (set to FFFFFFFF_FFFFFFFFH).
Note that the VMCLEAR instruction might not explicitly write any VMCS data to memory; the data may be already 
resident in memory before the VMCLEAR is executed.

Operation

IF (register operand) or (not in VMX operation) or (CR0.PE = 0) or (RFLAGS.VM = 1) or (IA32_EFER.LMA = 1 and CS.L = 0)

THEN #UD;

ELSIF in VMX non-root operation

THEN VM exit;

ELSIF CPL

>

 0

THEN #GP(0);
ELSE

addr ← contents of 64-bit in-memory operand;

IF addr is not 4KB-aligned OR 
addr sets any bits beyond the physical-address width

1

THEN VMfail(VMCLEAR with invalid physical address);

ELSIF addr = VMXON pointer

THEN VMfail(VMCLEAR with VMXON pointer);
ELSE

ensure that data for VMCS referenced by the operand is in memory;
initialize implementation-specific data in VMCS region;
launch state of VMCS referenced by the operand ← “clear”

IF operand addr = current-VMCS pointer

THEN current-VMCS pointer ← FFFFFFFF_FFFFFFFFH;

FI;
VMsucceed;

FI;

FI;

Flags Affected

See the operation section and Section 30.2.

Protected Mode Exceptions

#GP(0)

If the current privilege level is not 0.
If the memory operand effective address is outside the CS, DS, ES, FS, or GS segment limit.
If the DS, ES, FS, or GS register contains an unusable segment.
If the operand is located in an execute-only code segment.

Opcode

Instruction

Description

66 0F C7 /6

VMCLEAR m64

Copy VMCS data to VMCS region in memory.

1. If IA32_VMX_BASIC[48] is read as 1, VMfail occurs if addr sets any bits in the range 63:32; see Appendix A.1.