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

Table Of Contents
25-16 Vol. 3
SYSTEM MANAGEMENT
Note that the IO_SMI bit by itself is a strong indication, not a guarantee, that the SMI
is synchronous. This is because an asynchronous SMI might coincidentally be taken
after an I/O instruction. In such a case, the IO_SMI bit would still be set in the SMM
state save map.
Information characterizing the I/O instruction is saved in two locations in the SMM
State Save Map (Table 25-5). Note that the IO_SMI bit also serves as a valid bit for
the rest of the I/O information fields. The contents of these I/O information fields are
not defined when the IO_SMI bit is not set.
When IO_SMI is set, the other fields may be interpreted as follows:
I/O length:
001 – Byte
010 – Word
100 – Dword
I/O instruction type (Table 25-6)
Table 25-5. I/O Instruction Information in the SMM State Save Map
State (SMM Rev. ID: 30004H or
higher)
Format
31 16 15 8 7 4 3 1 0
I/0 State Field
SMRAM offset 7FA4
I/O Port
Reserved
I/O Type
I/O Length
IO_SMI
31 0
I/O Memory Address Field
SMRAM offset 7FA0
I/O Memory Address
Table 25-6. I/O Instruction Type Encodings
Instruction Encoding
IN Immediate 1001
IN DX 0001
OUT Immediate 1000
OUT DX 0000
INS 0011
OUTS 0010
REP INS 0111
REP OUTS 0110