Machine Check Exception Handling for an Itanium Processor
After collecting the MCA log, the standard HAL MCA handler calls the MCA driver ExceptionCallback function providing the MCA record. This allows the MCA driver to process the log and makes appropriate consideration with regards to the stability of the system. This callback function returns an error severity value to let the HAL know if it should consider the event as fatal, recoverable, or corrected by the MCA driver. In case of a corrected event and if registered, the MCA driver's DpcCallback is then called for asynchronous log collection by the driver.
In case of an OS_MCA uncorrected event, the HAL calls KeBugCheckEx with the bug check code MACHINE_CHECK_EXCEPTION and the following four parameters to halt the system:
HAL Itanium MCA type, which values could be:
- HAL_BUGCHECK_MCA_ASSERT = 1
- HAL_BUGCHECK_MCA_GET_STATEINFO = 2
- HAL_BUGCHECK_MCA_CLEAR_STATEINFO = 3
- HAL_BUGCHECK_MCA_FATAL = 4
The last value should be the expected only for the MCA driver, the other values are HAL internal error values.
MCA log address.
MCA maximum log size.
SAL status of the last SAL interface.