beautypg.com

2 enabling binit# drive and binit# observation – Intel IA-32 User Manual

Page 545

background image

Vol. 3A 14-19

MACHINE-CHECK ARCHITECTURE

The MCIP flag in the IA32_MCG_STATUS register indicates whether a machine-check
exception was generated. Before returning from the machine-check exception handler,
software should clear this flag so that it can be used reliably by an error logging utility. The
MCIP flag also detects recursion. The machine-check architecture does not support
recursion. When the processor detects machine-check recursion, it enters the shutdown
state.

14.7.2

Enabling BINIT# Drive and BINIT# Observation

For complete operation of the processors machine check capabilities, it is essential that the
system BIOS enable BINIT# drive and BINIT# observation. This allows the processor to use
BINIT# to clear internal blocking states and some external blocking states. This also allows the
processor to correctly report a wide range of machine check exceptions.

For example, on a Pentium III processor that is:

Executing a locked CMPXCHG8B instruction.

Reports a machine check exception on the initial data read.

And the comparison operation fails.

The processor unlocks the bus after completion of the locked sequence by asserting a BINIT#
signal. Without BINIT# drive (UP environment) or BINIT# drive and observation enabled (MP
environment); the machine check error is logged but the machine check exception is not taken
(if MCE's are enabled).

Example 14-20 gives typical steps carried out by a machine-check exception handler.

Example 14-20. Machine-Check Exception Handler

Pseudocode

IF CPU supports MCE

THEN

IF CPU supports MCA

THEN

call errorlogging routine; (* returns restartability *)

FI;

ELSE (* Pentium(R) processor compatible *)

READ P5_MC_ADDR
READ P5_MC_TYPE;
report RESTARTABILITY to console;

FI;
IF error is not restartable

THEN

report RESTARTABILITY to console;
abort system;

FI;
CLEAR MCIP flag in IA32_MCG_STATUS;