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

Table Of Contents
Vol. 3 25-33
SYSTEM MANAGEMENT
utive-VMCS pointer field does not contain the VMXON pointer (the VM entry enters
VMX non-root operation).
In this case, determination is based on the VM-execution control fields in the VMCS
that is current after the VM entry. This is the VMCS referenced by the value of the
executive-VMCS pointer field at the time of the VM entry (see Section 25.15.4.7).
This VMCS also controls the delivery of such VM exits. Thus, VM exits induced by a
VM entry returning from SMM are to the executive monitor and not to the SMM
monitor.
25.15.4.9 SMI Blocking
VM entries that return from SMM determine the blocking of system-management
interrupts (SMIs) as follows:
If the “deactivate dual-monitor treatment” VM-entry control is 0, SMIs are
blocked after VM entry if and only if the bit 2 in the interruptibility-state field is 1.
If the “deactivate dual-monitor treatment” VM-entry control is 1, the blocking of
SMIs depends on whether the logical processor is in SMX operation:
1
If the logical processor is in SMX operation, SMIs are blocked after VM entry.
If the logical processor is outside SMX operation, SMIs are unblocked after
VM entry.
VM entries that return from SMM and that do not deactivate the dual-monitor treat-
ment may leave SMIs blocked. This feature exists to allow an SMM monitor to invoke
functionality outside of SMM without unblocking SMIs.
25.15.4.10 Failures of VM Entries That Return from SMM
Section 22.7 describes the treatment of VM entries that fail during or after loading
guest state. Such failures record information in the VM-exit information fields and
load processor state as would be done on a VM exit. The VMCS used is the one that
was current before the VM entry commenced. Control is thus transferred to the SMM
monitor and the logical processor remains in SMM.
25.15.5 Enabling the Dual-Monitor Treatment
Code and data for the SMM monitor reside in a region of SMRAM called the monitor
segment (MSEG). Code running in SMM determines the location of MSEG and estab-
1. A logical processor is in SMX operation if GETSEC[SEXIT] has not been executed since the last
execution of GETSEC[SENTER]. A logical processor is outside SMX operation if GETSEC[SENTER]
has not been executed or if GETSEC[SEXIT] was executed after the last execution of GET-
SEC[SENTER]. See Chapter 6, “Safer Mode Extensions Reference,” in Intel® 64 and IA-32 Archi-
tectures Software Developer’s Manual, Volume 2B.