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

Table Of Contents
20-16 Vol. 3
VIRTUAL-MACHINE CONTROL STRUCTURES
20.6.7 CR3-Target Controls
The VM-execution control fields include a set of 4 CR3-target values and a CR3-
target count. The CR3-target values each have 64 bits on processors that support
Intel 64 architecture and 32 bits on processors that do not. The CR3-target count has
32 bits on all processors.
An execution of MOV to CR3 in VMX non-root operation does not cause a VM exit if its
source operand matches one of these values. If the CR3-target count is n, only the
first n CR3-target values are considered; if the CR3-target count is 0, MOV to CR3
always causes a VM exit
There are no limitations on the values that can be written for the CR3-target values.
VM entry fails (see Section 22.2) if the CR3-target count is greater than 4.
Future processors may support a different number of CR3-target values. Software
should read the VMX capability MSR IA32_VMX_MISC (see Appendix G.6) to deter-
mine the number of values supported.
20.6.8 Controls for APIC Accesses
There are three mechanisms by which software accesses registers of the logical
processor’s local APIC:
If the local APIC is in xAPIC mode, it can perform memory-mapped accesses to
addresses in the 4-KByte page referenced by the physical address in the
IA32_APIC_BASE MSR (see Section 9.4.4, “Local APIC Status and Location” in
the Intel® 64 and IA-32 Architectures Software Developer’s Manual, Volume 3A
and Intel® 64 Architecture Processor Topology Enumeration).
1
If the local APIC is in x2APIC mode, it can accesses the local APIC’s registers
using the RDMSR and WRMSR instructions (see Intel® 64 Architecture Processor
Topology Enumeration).
In 64-bit mode, it can access the local APIC’s task-priority register (TPR) using
the MOV CR8 instruction.
There are three processor-based VM-execution controls (see Section 20.6.2) that
control such accesses. There are “use TPR shadow”, “virtualize APIC accesses”, and
“virtualize x2APIC mode”. These controls interact with the following fields:
APIC-access address (64 bits). This field is the physical address of the 4-KByte
APIC-access page. If the “virtualize APIC accesses” VM-execution control is 1,
operations that access this page may cause VM exits. See Section 21.2 and
Section 21.5.
The APIC-access address exists only on processors that support the 1-setting of
the “virtualize APIC accesses” VM-execution control.
1. Note that, if the local APIC does not support x2APIC mode, it is always in xAPIC mode.