15-46 Vol. 3
MACHINE-CHECK ARCHITECTURE
AR flag to find the type of the UCR error for software recovery and determine if
software error recovery is possible.
• When both the S and the AR flags are clear in the IA32_MCi_STATUS register for
the UCR error (VAL=1, UC=1, EN=x and PCC=0), the error in this bank is an
uncorrected no-action required error (UCNA). UCNA errors are uncorrected but
do not require any OS recovery action to continue execution. These errors
indicate that some data in the system is corrupt, but that data has not been
consumed and may not be consumed. If that data is consumed a non-UNCA
machine check exception will be generated. UCNA errors are signaled in the same
way as corrected machine check errors and the CMCI and CMC polling handler is
primarily responsible for handling UCNA errors. Like corrected errors, the MCA
handler can optionally log and clear UCNA errors as long as it can avoid the
undesired race condition with the CMCI or CMC polling handler. As UCNA errors
are not the source of machine check exceptions, the MCA handler should
continue searching for uncorrected or software recoverable errors in all other MC
banks.
• When the S flag in the IA32_MCi_STATUS register is set for the UCR error
((VAL=1, UC=1, EN=1 and PCC=0), the error in this bank is software recoverable
and it was signaled through a machine-check exception. The AR flag in the
IA32_MCi_STATUS register further clarifies the type of the software recoverable
errors.
• When the AR flag in the IA32_MCi_STATUS register is clear for the software
recoverable error (VAL=1, UC=1, EN=1, PCC=0 and S=1), the error in this bank
is a software recoverable action optional (SRAO) error. The MCE handler and the
operating system can analyze the IA32_MCi_STATUS [15:0] to implement MCA
error code specific optional recovery action, but this recovery action is optional.
System software can resume the program execution from the instruction pointer
saved on the stack for the machine check exception when the RIPV flag in the
IA32_MCG_STATUS register is set.
• When the OVER flag in the IA32_MCi_STATUS register is set for the SRAO error
(VAL=1, UC=1, EN=1, PCC=0, S=1 and AR=0), the MCE handler cannot take
recovery action as the information of the SRAO error in the IA32_MCi_STATUS
register was potentially lost due to the overflow condition. Since the recovery
action for SRAO errors is optional, restarting the program execution from the
instruction pointer saved on the stack for the machine check exception is still
possible for the overflowed SRAO error if the RIPV flag in the IA32_MCG_STATUS
is set.
• When the AR flag in the IA32_MCi_STATUS register is set for the software
recoverable error (VAL=1, UC=1, EN=1, PCC=0 and S=1), the error in this bank
is a software recoverable action required (SRAR) error. The MCE handler and the
operating system must take recovery action in order to continue execution after
the machine-check exception. The MCA handler and the operating system need
to analyze the IA32_MCi_STATUS [15:0] to determine the MCA error code
specific recovery action. If no recovery action can be performed, the operating
system must reset the system.