Intel IA-32 User Manual
Page 20
CONTENTS
xx
Vol. 3A
PAGE
20.7
VM-EXIT CONTROL FIELDS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-14
20.7.1
VM-Exit Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-14
20.7.2
VM-Exit Controls for MSRs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-15
20.8
VM-ENTRY CONTROL FIELDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-15
20.8.1
VM-Entry Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-16
20.8.2
VM-Entry Controls for MSRs . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-16
20.8.3
VM-Entry Controls for Event Injection . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-17
20.9
VM-EXIT INFORMATION FIELDS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 20-18
20.9.1
Basic VM-Exit Information . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-18
20.9.2
Information for VM Exits Due to Vectored Events . . . . . . . . . . . . . . . . . . . . . . .20-19
20.9.3
Information for VM Exits That Occur During Event Delivery . . . . . . . . . . . . . . .20-19
20.9.4
Information for VM Exits Due to Instruction Execution . . . . . . . . . . . . . . . . . . .20-20
20.9.5
VM-Instruction Error Field . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-22
20.10
SOFTWARE ACCESS TO THE VMCS AND RELATED STRUCTURES . . . . . . 20-22
20.10.1
Software Access to the Virtual-Machine Control Structure . . . . . . . . . . . . . . . .20-22
20.10.2
VMREAD, VMWRITE, and Encodings of VMCS Fields . . . . . . . . . . . . . . . . . .20-23
20.10.3
Software Access to Related Structures . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-26
20.10.4
The VMXON Region . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .20-26
20.11
USING VMCLEAR TO INITIALIZE A VMCS REGION. . . . . . . . . . . . . . . . . . . . . 20-26
CHAPTER 21
VMX NON-ROOT OPERATION
21.1
INSTRUCTIONS THAT CAUSE VM EXITS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-1
21.1.1
Relative Priority of IA-32 Faults and VM Exits. . . . . . . . . . . . . . . . . . . . . . . . . . . 19-2
21.1.2
Instructions That Cause VM Exits Unconditionally . . . . . . . . . . . . . . . . . . . . . . . 19-2
21.1.3
Instructions That Cause VM Exits Conditionally . . . . . . . . . . . . . . . . . . . . . . . . . 19-3
21.2
OTHER CAUSES OF VM EXITS . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 19-5
21.3
CHANGES TO INSTRUCTION BEHAVIOR IN VMX NON-ROOT OPERATION . 19-7
21.4
OTHER CHANGES IN VMX NON-ROOT OPERATION . . . . . . . . . . . . . . . . . . . 19-10
21.4.1
Event Blocking. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19-10
21.4.2
Treatment of Task Switches . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .19-10
CHAPTER 22
VM ENTRIES
22.1
BASIC VM-ENTRY CHECKS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-2
22.2
CHECKS ON VMX CONTROLS AND HOST-STATE AREA . . . . . . . . . . . . . . . . . 21-3
22.2.1
Checks on VMX Controls . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-3
22.2.1.1
VM-Execution Control Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-3
22.2.1.2
VM-Exit Control Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-4
22.2.1.3
VM-Entry Control Fields . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-5
22.2.2
Checks on Host Control Registers and MSRs. . . . . . . . . . . . . . . . . . . . . . . . . . . 21-6
22.2.3
Checks on Host Segment and Descriptor-Table Registers . . . . . . . . . . . . . . . . . 21-6
22.2.4
Checks Related to Address-Space Size . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-7
22.3
CHECKING AND LOADING GUEST STATE. . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-7
22.3.1
Checks on the Guest State Area . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-7
22.3.1.1
Checks on Guest Control Registers, Debug Registers, and MSRs . . . . . . . . 21-8
22.3.1.2
Checks on Guest Segment Registers. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 21-8
22.3.1.3
Checks on Guest Descriptor-Table Registers . . . . . . . . . . . . . . . . . . . . . . .21-11
22.3.1.4
Checks on Guest RIP and RFLAGS. . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21-11
22.3.1.5
Checks on Guest Non-Register State. . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21-12
22.3.1.6
Checks on Guest Page-Directory Pointers . . . . . . . . . . . . . . . . . . . . . . . . . .21-14
22.3.2
Loading Guest State . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . .21-14