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

Table Of Contents
19-2 Vol. 3
INTRODUCTION TO VIRTUAL-MACHINE EXTENSIONS
Processor behavior in VMX root operation is very much as it is outside VMX operation.
The principal differences are that a set of new instructions (the VMX instructions) is
available and that the values that can be loaded into certain control registers are
limited (see Section 19.8).
Processor behavior in VMX non-root operation is restricted and modified to facilitate
virtualization. Instead of their ordinary operation, certain instructions (including the
new VMCALL instruction) and events cause VM exits to the VMM. Because these
VM exits replace ordinary behavior, the functionality of software in VMX non-root
operation is limited. It is this limitation that allows the VMM to retain control of
processor resources.
There is no software-visible bit whose setting indicates whether a logical processor is
in VMX non-root operation. This fact may allow a VMM to prevent guest software from
determining that it is running in a virtual machine.
Because VMX operation places restrictions even on software running with current
privilege level (CPL) 0, guest software can run at the privilege level for which it was
originally designed. This capability may simplify the development of a VMM.
19.4 LIFE CYCLE OF VMM SOFTWARE
Figure 19-1 illustrates the life cycle of a VMM and its guest software as well as the
interactions between them. The following items summarize that life cycle:
Software enters VMX operation by executing a VMXON instruction.
Using VM entries, a VMM can then enter guests into virtual machines (one at a
time). The VMM effects a VM entry using instructions VMLAUNCH and
VMRESUME; it regains control using VM exits.
VM exits transfer control to an entry point specified by the VMM. The VMM can
take action appropriate to the cause of the VM exit and can then return to the
virtual machine using a VM entry.
Eventually, the VMM may decide to shut itself down and leave VMX operation. It
does so by executing the VMXOFF instruction.