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

Table Of Contents
Vol. 3 25-5
SYSTEM MANAGEMENT
other inhibits. On these processors, NMIs will be inhibited if no action is taken in the
SMM handler to uninhibit them (see Section 25.8).
If the processor is in the HALT state when the SMI is received, the processor handles
the return from SMM slightly differently (see Section 25.10). Also, the SMBASE
address can be changed on a return from SMM (see Section 25.11).
25.4 SMRAM
While in SMM, the processor executes code and stores data in the SMRAM space. The
SMRAM space is mapped to the physical address space of the processor and can be
up to 4 GBytes in size. The processor uses this space to save the context of the
processor and to store the SMI handler code, data and stack. It can also be used to
store system management information (such as the system configuration and
specific information about powered-down devices) and OEM-specific information.
The default SMRAM size is 64 KBytes beginning at a base physical address in physical
memory called the SMBASE (see Figure 25-1). The SMBASE default value following a
hardware reset is 30000H. The processor looks for the first instruction of the SMI
handler at the address [SMBASE + 8000H]. It stores the processor’s state in the area
from [SMBASE + FE00H] to [SMBASE + FFFFH]. See Section 25.4.1 for a description
of the mapping of the state save area.
The system logic is minimally required to decode the physical address range for the
SMRAM from [SMBASE + 8000H] to [SMBASE + FFFFH]. A larger area can be
decoded if needed. The size of this SMRAM can be between 32 KBytes and 4 GBytes.
The location of the SMRAM can be changed by changing the SMBASE value (see
Section 25.11). It should be noted that all processors in a multiple-processor system
are initialized with the same SMBASE value (30000H). Initialization software must
sequentially place each processor in SMM and change its SMBASE so that it does not
overlap those of other processors.
The actual physical location of the SMRAM can be in system memory or in a separate
RAM memory. The processor generates an SMI acknowledge transaction (P6 family
processors) or asserts the SMIACT# pin (Pentium and Intel486 processors) when the
processor receives an SMI (see Section 25.3.1).
System logic can use the SMI acknowledge transaction or the assertion of the
SMIACT# pin to decode accesses to the SMRAM and redirect them (if desired) to
specific SMRAM memory. If a separate RAM memory is used for SMRAM, system logic
should provide a programmable method of mapping the SMRAM into system memory
space when the processor is not in SMM. This mechanism will enable start-up proce-
dures to initialize the SMRAM space (that is, load the SMI handler) before executing
the SMI handler during SMM.