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

Table Of Contents
25-8 Vol. 3
SYSTEM MANAGEMENT
If an SMI request is issued for the purpose of powering down the processor, the
values of all reserved locations in the SMM state save must be saved to nonvolatile
memory.
The following state is not automatically saved and restored following an SMI and the
RSM instruction, respectively:
Debug registers DR0 through DR3.
The x87 FPU registers.
The MTRRs.
Control register CR2.
The model-specific registers (for the P6 family and Pentium processors) or test
registers TR3 through TR7 (for the Pentium and Intel486 processors).
The state of the trap controller.
The machine-check architecture registers.
The APIC internal interrupt state (ISR, IRR, etc.).
The microcode update state.
If an SMI is used to power down the processor, a power-on reset will be required
before returning to SMM, which will reset much of this state back to its default
values. So an SMI handler that is going to trigger power down should first read these
registers listed above directly, and save them (along with the rest of RAM) to nonvol-
atile storage. After the power-on reset, the continuation of the SMI handler should
restore these values, along with the rest of the system's state. Anytime the SMI
handler changes these registers in the processor, it must also save and restore them.
NOTES
A small subset of the MSRs (such as, the time-stamp counter and
performance-monitoring counters) are not arbitrarily writable and
therefore cannot be saved and restored. SMM-based power-down
and restoration should only be performed with operating systems
that do not use or rely on the values of these registers.
Operating system developers should be aware of this fact and insure
that their operating-system assisted power-down and restoration
software is immune to unexpected changes in these register values.
25.4.1.1 SMRAM State Save Map and Intel 64 Architecture
When the processor initially enters SMM, it writes its state to the state save area of
the SMRAM. The state save area on an Intel 64 processor at [SMBASE + 8000H +
7FFFH] and extends to [SMBASE + 8000H + 7C00H].
Support for Intel 64 architecture is reported by CPUID.80000001:EDX[29] = 1. The
layout of the SMRAM state save map is shown in Table 25-3.