background image

Vol. 3C 34-19


IA32_SMM_MONITOR_CTL[bit 2] is 1 (see Section 34.15.5 for details regarding this MSR).


 Section 34.15.7 iden-

tifies a case in which SMIs may be blocked when VMXOFF is executed.
Not all processors allow this bit to be set to 1. Software should consult the VMX capability MSR IA32_VMX_MISC 
(see Appendix A.6) to determine whether this is allowed.


Dual-monitor treatment is activated through the cooperation of the executive monitor (the VMM that operates 
outside of SMM to provide basic virtualization) and the SMM-transfer monitor (STM; the VMM that operates 
inside SMM—while in VMX operation—to support system-management functions). Control is transferred to the STM 
through VM exits; VM entries are used to return from SMM.
The dual-monitor treatment may not be supported by all processors. Software should consult the VMX capability 
MSR IA32_VMX_BASIC (see Appendix A.1) to determine whether it is supported.

34.15.1  Dual-Monitor Treatment Overview

The dual-monitor treatment uses an executive monitor and an SMM-transfer monitor (STM). Transitions from the 
executive monitor or its guests to the STM are called SMM VM exits and are discussed in Section 34.15.2. SMM 
VM exits are caused by SMIs as well as executions of VMCALL in VMX root operation. The latter allow the executive 
monitor to call the STM for service.
The STM runs in VMX root operation and uses VMX instructions to establish a VMCS and perform VM entries to its 
own guests. This is done all inside SMM (see Section 34.15.3). The STM returns from SMM, not by using the RSM 
instruction, but by using a VM entry that returns from SMM. Such VM entries are described in Section 34.15.4.
Initially, there is no STM and the default treatment (Section 34.14) is used. The dual-monitor treatment is not used 
until it is enabled and activated. The steps to do this are described in Section 34.15.5 and Section 34.15.6.
It is not possible to leave VMX operation under the dual-monitor treatment; VMXOFF will fail if executed. The dual-
monitor treatment must be deactivated first. The STM deactivates dual-monitor treatment using a VM entry that 
returns from SMM with the “deactivate dual-monitor treatment” VM-entry control set to 1 (see Section 34.15.7).
The executive monitor configures any VMCS that it uses for VM exits to the executive monitor. SMM VM exits, which 
transfer control to the STM, use a different VMCS. Under the dual-monitor treatment, each logical processor uses 
a separate VMCS called the SMM-transfer VMCS. When the dual-monitor treatment is active, the logical 
processor maintains another VMCS pointer called the SMM-transfer VMCS pointer. The SMM-transfer VMCS 
pointer is established when the dual-monitor treatment is activated.

34.15.2 SMM 

VM Exits

An SMM VM exit is a VM exit that begins outside SMM and that ends in SMM.
Unlike other VM exits, SMM VM exits can begin in VMX root operation. SMM VM exits result from the arrival of an 
SMI outside SMM or from execution of VMCALL in VMX root operation outside SMM. Execution of VMCALL in VMX 
root operation causes an SMM VM exit only if the valid bit is set in the IA32_SMM_MONITOR_CTL MSR (see Section 
Execution of VMCALL in VMX root operation causes an SMM VM exit even under the default treatment. This SMM 
VM exit activates the dual-monitor treatment (see Section 34.15.6).
Differences between SMM VM exits and other VM exits are detailed in Sections through 
Differences between SMM VM exits that activate the dual-monitor treatment and other SMM VM exits are described 
in Section 34.15.6.

1. Setting IA32_SMM_MONITOR_CTL[bit 2] to 1 prevents VMXOFF from unblocking SMIs regardless of the value of the register’s valid 

bit (bit 0).