Intel 64 and IA-32 Architectures Software Developers Manual Volume 3B, System Programming Guide Part 2

Table Of Contents
Vol. 3 19-3
INTRODUCTION TO VIRTUAL-MACHINE EXTENSIONS
19.5 VIRTUAL-MACHINE CONTROL STRUCTURE
VMX non-root operation and VMX transitions are controlled by a data structure called
a virtual-machine control structure (VMCS).
Access to the VMCS is managed through a component of processor state called the
VMCS pointer (one per logical processor). The value of the VMCS pointer is the 64-bit
address of the VMCS. The VMCS pointer is read and written using the instructions
VMPTRST and VMPTRLD. The VMM configures a VMCS using the VMREAD, VMWRITE,
and VMCLEAR instructions.
A VMM could use a different VMCS for each virtual machine that it supports. For a
virtual machine with multiple logical processors (virtual processors), the VMM could
use a different VMCS for each virtual processor.
19.6 DISCOVERING SUPPORT FOR VMX
Before system software enters into VMX operation, it must discover the presence of
VMX support in the processor. System software can determine whether a processor
supports VMX operation using CPUID. If CPUID.1:ECX.VMX[bit 5] = 1, then VMX
operation is supported. See Chapter 3, “Instruction Set Reference, A-M” of Intel® 64
and IA-32 Architectures Software Developer’s Manual, Volume 2A.
The VMX architecture is designed to be extensible so that future processors in VMX
operation can support additional features not present in first-generation implemen-
tations of the VMX architecture. The availability of extensible VMX features is
reported to software using a set of VMX capability MSRs (see Appendix G, “VMX
Capability Reporting Facility”).
Figure 19-1. Interaction of a Virtual-Machine Monitor and Guests
VM Monitor
Guest 0 Guest 1
VM Exit VM Exit
VM Entry
VMXOFFVMXON