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

Table Of Contents
25-34 Vol. 3
SYSTEM MANAGEMENT
lishes its content. This code is also responsible for enabling the dual-monitor treat-
ment.
SMM code enables the dual-monitor treatment and determines the location of MSEG
by writing to IA32_SMM_MONITOR_CTL MSR (index 9BH). The MSR has the following
format:
Bit 0 is the register’s valid bit. The SMM monitor may be invoked using VMCALL
only if this bit is 1. Because VMCALL is used to activate the dual-monitor
treatment (see Section 25.15.6), the dual-monitor treatment cannot be
activated if the bit is 0. This bit is cleared when the logical processor is reset.
Bits 11:1 are reserved.
Bits 31:12 contain a value that, when shifted right 12 bits, is the physical address
of MSEG (the MSEG base address).
Bits 63:32 are reserved.
The following items detail use of this MSR:
The IA32_SMM_MONITOR_CTL MSR is supported only on processors that support
the dual-monitor treatment.
1
On other processors, accesses to the MSR using
RDMSR or WRMSR generate a general-protection fault (#GP(0)).
A write to the IA32_SMM_MONITOR_CTL MSR using WRMSR generates a
general-protection fault (#GP(0)) if executed outside of SMM or if an attempt is
made to set any reserved bit. An attempt to write to IA32_SMM_MONITOR_CTL
MSR fails if made as part of a VM exit that does not end in SMM or part of a
VM entry that does not begin in SMM.
Reads from IA32_SMM_MONITOR_CTL MSR using RDMSR are allowed any time
RDMSR is allowed. The MSR may be read as part of any VM exit.
The dual-monitor treatment can be activated only if the valid bit in the MSR is set
to 1.
The 32 bytes located at the MSEG base address are called the MSEG header. The
format of the MSEG header is given in Table 25-10 (each field is 32 bits).
1. Software should consult the VMX capability MSR IA32_VMX_BASIC (see Appendix G.1) to deter-
mine whether the dual-monitor treatment is supported.
Table 25-10. Format of MSEG Header
Byte Offset Field
0 MSEG-header revision identifier
4 SMM-monitor features
8GDTR limit
12 GDTR base offset