background image

A-6 Vol. 3D

VMX CAPABILITY REPORTING FACILITY

If bit 5 is read as 1, VM exits store the value of IA32_EFER.LMA into the “IA-32e mode guest” VM-entry control; 
see Section 27.2 for more details. This bit is read as 1 on any logical processor that supports the 1-setting of 
the “unrestricted guest” VM-execution control.

Bits 8:6 report, as a bitmap, the activity states supported by the implementation:
— Bit 6 reports (if set) the support for activity state 1 (HLT).
— Bit 7 reports (if set) the support for activity state 2 (shutdown).
— Bit 8 reports (if set) the support for activity state 3 (wait-for-SIPI).
If an activity state is not supported, the implementation causes a VM entry to fail if it attempts to establish that 
activity state. All implementations support VM entry to activity state 0 (active).

If bit 14 is read as 1, Intel

®

 Processor Trace (Intel PT) can be used in VMX operation. If the processor supports 

Intel PT but does not allow it to be used in VMX operation, execution of VMXON clears IA32_RTIT_CTL.TraceEn 
(see “VMXON—Enter VMX Operation” in Chapter 30); any attempt to set that bit while in VMX operation 
(including VMX root operation) using the WRMSR instruction causes a general-protection exception.

If bit 15 is read as 1, the RDMSR instruction can be used in system-management mode (SMM) to read the 
IA32_SMBASE MSR (MSR address 9EH). See Section 34.15.6.4.

Bits 24:16 indicate the number of CR3-target values supported by the processor. This number is a value 
between 0 and 256, inclusive (bit 24 is set if and only if bits 23:16 are clear).

Bits 27:25 is used to compute the recommended maximum number of MSRs that should appear in the VM-exit 
MSR-store list, the VM-exit MSR-load list, or the VM-entry MSR-load list. Specifically, if the value bits 27:25 of 
IA32_VMX_MISC is N, then 512 * (N + 1) is the recommended maximum number of MSRs to be included in 
each list. If the limit is exceeded, undefined processor behavior may result (including a machine check during 
the VMX transition).

If bit 28 is read as 1, bit 2 of the IA32_SMM_MONITOR_CTL can be set to 1. VMXOFF unblocks SMIs unless 
IA32_SMM_MONITOR_CTL[bit 2] is 1 (see Section 34.14.4).

If bit 29 is read as 1, software can use VMWRITE to write to any supported field in the VMCS; otherwise, 
VMWRITE cannot be used to modify VM-exit information fields.

If bit 30 is read as 1, VM entry allows injection of a software interrupt, software exception, or privileged 
software exception with an instruction length of 0.

Bits 63:32 report the 32-bit MSEG revision identifier used by the processor.

Bits 13:9 and bit 31 are reserved and are read as 0.

A.7 

VMX-FIXED BITS IN CR0

The IA32_VMX_CR0_FIXED0 MSR (index 486H) and IA32_VMX_CR0_FIXED1 MSR (index 487H) indicate how bits 
in CR0 may be set in VMX operation. They report on bits in CR0 that are allowed to be 0 and to be 1, respectively, 
in VMX operation. If bit X is 1 in IA32_VMX_CR0_FIXED0, then that bit of CR0 is fixed to 1 in VMX operation. Simi-
larly, if bit X is 0 in IA32_VMX_CR0_FIXED1, then that bit of CR0 is fixed to 0 in VMX operation. It is always the case 
that, if bit X is 1 in IA32_VMX_CR0_FIXED0, then that bit is also 1 in IA32_VMX_CR0_FIXED1; if bit X is 0 in 
IA32_VMX_CR0_FIXED1, then that bit is also 0 in IA32_VMX_CR0_FIXED0. Thus, each bit in CR0 is either fixed to 
0 (with value 0 in both MSRs), fixed to 1 (1 in both MSRs), or flexible (0 in IA32_VMX_CR0_FIXED0 and 1 in 
IA32_VMX_CR0_FIXED1).

A.8 

VMX-FIXED BITS IN CR4

The IA32_VMX_CR4_FIXED0 MSR (index 488H) and IA32_VMX_CR4_FIXED1 MSR (index 489H) indicate how bits 
in CR4 may be set in VMX operation. They report on bits in CR4 that are allowed to be 0 and 1, respectively, in VMX 
operation. If bit X is 1 in IA32_VMX_CR4_FIXED0, then that bit of CR4 is fixed to 1 in VMX operation. Similarly, if 
bit X is 0 in IA32_VMX_CR4_FIXED1, then that bit of CR4 is fixed to 0 in VMX operation. It is always the case that, 
if bit X is 1 in IA32_VMX_CR4_FIXED0, then that bit is also 1 in IA32_VMX_CR4_FIXED1; if bit X is 0 in 
IA32_VMX_CR4_FIXED1, then that bit is also 0 in IA32_VMX_CR4_FIXED0. Thus, each bit in CR4 is either fixed to