background image

Vol. 3C 25-1

CHAPTER 25

VMX NON-ROOT OPERATION

In a virtualized environment using VMX, the guest software stack typically runs on a logical processor in VMX non-
root operation. This mode of operation is similar to that of ordinary processor operation outside of the virtualized 
environment. This chapter describes the differences between VMX non-root operation and ordinary processor oper-
ation with special attention to causes of VM exits (which bring a logical processor from VMX non-root operation to 
root operation). The differences between VMX non-root operation and ordinary processor operation are described 
in the following sections:

Section 25.1, “Instructions That Cause VM Exits”

Section 25.2, “Other Causes of VM Exits”

Section 25.3, “Changes to Instruction Behavior in VMX Non-Root Operation”

Section 25.4, “Other Changes in VMX Non-Root Operation” 

Section 25.5, “Features Specific to VMX Non-Root Operation”

Section 25.6, “Unrestricted Guests”

Chapter 26, “VM Entries,” describes the data control structures that govern VMX non-root operation. Chapter 26, 
“VM Entries,” 
describes the operation of VM entries by which the processor transitions from VMX root operation to 
VMX non-root operation. Chapter 25, “VMX Non-Root Operation,” describes the operation of VM exits by which the 
processor transitions from VMX non-root operation to VMX root operation.
Chapter 28, “VMX Support for Address Translation,” describes two features that support address translation in VMX 
non-root operation. Chapter 29, “APIC Virtualization and Virtual Interrupts,” describes features that support virtu-
alization of interrupts and the Advanced Programmable Interrupt Controller (APIC) in VMX non-root operation.

25.1 

INSTRUCTIONS THAT CAUSE VM EXITS

Certain instructions may cause VM exits if executed in VMX non-root operation. Unless otherwise specified, such 
VM exits are “fault-like,” meaning that the instruction causing the VM exit does not execute and no processor state 
is updated by the instruction. Section 27.1 details architectural state in the context of a VM exit.
Section 25.1.1 defines the prioritization between faults and VM exits for instructions subject to both. Section 
25.1.2 id
entifies instructions that cause VM exits whenever they are executed in VMX non-root operation (and thus 
can never be executed in VMX non-root operation). Section 25.1.3 identifies instructions that cause VM exits 
depending on the settings of certain VM-execution control fields (see Section 24.6).

25.1.1 

Relative Priority of Faults and VM Exits

The following principles describe the ordering between existing faults and VM exits:

Certain exceptions have priority over VM exits. These include invalid-opcode exceptions, faults based on 
privilege level,

1

 and general-protection exceptions that are based on checking I/O permission bits in the task-

state segment (TSS). For example, execution of RDMSR with CPL = 3 generates a general-protection exception 
and not a VM exit.

2

Faults incurred while fetching instruction operands have priority over VM exits that are conditioned based on 
the contents of those operands (see LMSW in Section 25.1.3).

VM exits caused by execution of the INS and OUTS instructions (resulting either because the “unconditional I/O 
exiting” VM-execution control is 1 or because the “use I/O bitmaps control is 1) have priority over the following 
faults: 

1. These include faults generated by attempts to execute, in virtual-8086 mode, privileged instructions that are not recognized in that 

mode.

2. MOV DR is an exception to this rule; see Section 25.1.3.