background image

34-12 Vol. 3C

SYSTEM MANAGEMENT MODE

34.7.1 

I/O State Implementation

Within the extended SMM state save map, a bit (IO_SMI) is provided that is set only when an SMI is either taken 
immediately after a successful I/O instruction or is taken after a successful iteration of a REP I/O instruction (the 
successful notion pertains to the processor point of view; not necessarily to the corresponding platform function). 
When set, the IO_SMI bit provides a strong indication that the corresponding SMI was synchronous. In this case, 
the SMM State Save Map also supplies the port address of the I/O operation. The IO_SMI bit and the I/O Port 
Address may be used in conjunction with the information logged by the platform to confirm that the SMI was 
indeed synchronous.
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 34-5). 
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 infor-
mation 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 34-6)

Table 34-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 P
ort

Re

se

rv

ed

I/O T
yp

e

I/O L
en

gt

h

IO

_S

M

I

31

0

I/O Memory Address Field
SMRAM offset 7FA0

I/O Memory Address

Table 34-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