UCR(
uncorrected recoverable machine check errors) 错误恢复是MCA的一种增强特性,第一个支持该特性的芯片是Intel的45nm芯片(CPUID为
DisplayFamily_DisplayModel: 06H_2EH)。该特性允许系统软件对于特定类型的
uncorrected errors做出一些恢复性动作以便保持系统的正常稳定允许
1. 软件错误恢复特性能力的探测
系统软件需要通过
IA32_MCG_CAP.
MCG_SER_P(bit 24)来判断是否支持软件恢复特性。当
IA32_MCG_CAP[24]被设定了,那么处理器支持软件对错误的恢复,如果被清除了,那么意味着处理器不支持软件恢复特性,并且
machine check处理函数的
主要职责是记录
machine check error后对系统进行关闭
新的可支持软件恢复的架构级通用的
MCA errors被叫做UCR(
Uncorrected
Recoverable
) errors。UCR errors 都是硬件不可自动校正的错误(
uncorrected errors
), 这种错误就意味着错误被系统硬件识别到了,但是该错误还没有污染处理器的运行上下文,并且已经发送信号通知了CPU进行处理。对于特定的UCR来说,一旦系统进行了recovery的动作后(如将错误内存页进行了隔离),系统软件在处理器上就可以继续正常的执行而不会发生重启等崩溃现象。
UCR error reporting提供了一种方法,通过对于数据标记错误而达到容错目的。
machine check处理函数会通过寄存器
读取其
中的错误,然后对错误进行分析,最后根据错误的种类来完成特定UCR的恢复动作。