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

Table Of Contents
21-18 Vol. 3
VMX NON-ROOT OPERATION
If the “CR8-load exiting” VM-execution control is 1, MOV to CR8 causes a
VM exit (see Section 21.1.3); the “use TPR shadow” VM-execution control is
ignored in this case.
RDMSR. Section 21.1.3 identifies when executions of the RDMSR instruction
cause VM exits. If such an execution causes neither a fault due to CPL > 0 nor a
VM exit, the instruction’s behavior may be modified for certain values of ECX:
If ECX contains 10H (indicating the IA32_TIME_STAMP_COUNTER MSR), the
value returned by the instruction is determined by the setting of the “use TSC
offsetting” VM-execution control as well as the TSC offset:
If the control is 0, the instruction operates normally, loading EAX:EDX
with the value of the IA32_TIME_STAMP_COUNTER MSR.
If the control is 1, the instruction loads EAX:EDX with the sum (using
signed addition) of the value of the IA32_TIME_STAMP_COUNTER MSR
and the value of the TSC offset (interpreted as a signed value).
If ECX contains 808H (indicating the TPR MSR), instruction behavior is
determined by the setting of the “virtualize x2APIC mode” VM-execution
control:
1
If the control is 0, the instruction operates normally. If the local APIC is in
x2APIC mode, EAX[7:0] is loaded with the value of the APIC’s task-
priority register (EDX and EAX[31:8] are cleared to 0). If the local APIC is
not in x2APIC mode, a general-protection fault occurs.
If the control is 1, the instruction loads EAX:EDX with the value of
bytes 87H:80H of the virtual-APIC page. This occurs even if the local APIC
is not in x2APIC mode (no general-protection fault occurs because the
local APIC is not x2APIC mode).
RDTSC. Behavior of the RDTSC instruction is determined by the settings of the
“RDTSC exiting” and “use TSC offsetting” VM-execution controls as well as the
TSC offset:
If both controls are 0, RDTSC operates normally.
If the “RDTSC exiting” VM-execution control is 0 and the “use TSC offsetting”
VM-execution control is 1, RDTSC loads EAX:EDX with the sum (using signed
addition) of the value of the IA32_TIME_STAMP_COUNTER MSR and the
value of the TSC offset (interpreted as a signed value).
If the “RDTSC exiting” VM-execution control is 1, RDTSC causes a VM exit
(see Section 21.1.3).
RDTSCP. Behavior of the RDTSCP instruction is determined first by the setting of
the “enable RDTSCP” VM-execution control:
2
1. Note that “virtualize x2APIC mode” is a secondary processor-based VM-execution control. If
bit 31 of the primary processor-based VM-execution controls is 0, VMX non-root operation func-
tions as if the “virtualize x2APIC mode” VM-execution control were 0. See Section 20.6.2.