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

Table Of Contents
Vol. 3 25-23
SYSTEM MANAGEMENT
25.14.1 Default Treatment of SMI Delivery
Ordinary SMI delivery saves processor state into SMRAM and then loads state based
on architectural definitions. Under the default treatment, processors that support
VMX operation perform SMI delivery as follows:
enter SMM;
save the following internal to the processor:
CR4.VMXE
an indication of whether the logical processor was in VMX operation (root or non-root)
IF the logical processor is in VMX operation
THEN
save current VMCS pointer internal to the processor;
leave VMX operation;
save VMX-critical state defined below;
FI;
IF the logical processor supports SMX operation
THEN
save internal to the logical processor an indication of whether the Intel® TXT private space
is locked;
IF the TXT private space is unlocked
THEN lock the TXT private space;
FI;
FI;
CR4.VMXE 0;
perform ordinary SMI delivery:
save processor state in SMRAM;
set processor state to standard SMM values;
1
invalidate VPID-tagged mappings and dual-tagged mappings associated with VPID 0000H; dual-
tagged mappings for VPID 0000H are invalidated for all EPTPs (see Section 24.3);
The pseudocode above makes reference to the saving of VMX-critical state. This
state consists of the following: (1) SS.DPL (the current privilege level);
(2) RFLAGS.VM
2
; (3) the state of blocking by STI and by MOV SS (see Table 20-3 in
Section 20.4.2); (4) the state of virtual-NMI blocking (only if the processor is in VMX
non-root operation and the “virtual NMIs” VM-execution control is 1); and (5) an
indication of whether an MTF VM exit is pending (see Section 21.7.2). These data
may be saved internal to the processor or in the VMCS region of the current VMCS.
1. This causes the logical processor to block INIT signals, NMIs, and SMIs.
2. Section 25.14 and Section 25.15 use the notation RAX, RIP, RSP, RFLAGS, etc. for processor reg-
isters because most processors that support VMX operation also support Intel 64 architecture.
For processors that do not support Intel 64 architecture, this notation refers to the 32-bit forms
of these registers (EAX, EIP, ESP, EFLAGS, etc.). In a few places, notation such as EAX is used to
refer specifically to the lower 32 bits of the register.