background image

30-2 Vol. 3C

VMX INSTRUCTION REFERENCE

VMFUNC — This instruction allows software in VMX non-root operation to invoke a VM function (processor 
functionality enabled and configured by software in VMX root operation) without a VM exit.

30.2 CONVENTIONS

The operation sections for the VMX instructions in Section 30.3 use the pseudo-function VMexit, which indicates 
that the logical processor performs a VM exit.
The operation sections also use the pseudo-functions VMsucceed, VMfail, VMfailInvalid, and VMfailValid. These 
pseudo-functions signal instruction success or failure by setting or clearing bits in RFLAGS and, in some cases, by 
writing the VM-instruction error field. The following pseudocode fragments detail these functions:

VMsucceed:

CF ← 0;

PF ← 0;

AF ← 0;

ZF ← 0;

SF ← 0;

OF ← 0;

VMfail(ErrorNumber):

IF VMCS pointer is valid

THEN VMfailValid(ErrorNumber);
ELSE VMfailInvalid;

FI;

VMfailInvalid:

CF ← 1;

PF ← 0;

AF ← 0;

ZF ← 0;

SF ← 0;

OF ← 0;

VMfailValid(ErrorNumber):// executed only if there is a current VMCS

CF ← 0;

PF ← 0;

AF ← 0;

ZF ← 1;

SF ← 0;

OF ← 0;

Set the VM-instruction error field to ErrorNumber;

The different VM-instruction error numbers are enumerated in Section 30.4, “VM Instruction Error Numbers”.

30.3 VMX 

INSTRUCTIONS

This section provides detailed descriptions of the VMX instructions.