Corrected machine-check error interrupt (CMCI) 是MCA的增强特性。在原来的芯片里面,都是使用一种叫做
threshold-based error reporting的机制来处理corrected error. 但是
threshold-based error reporting需要系统软件周期性的轮询检测硬件的
corrected MC errors,造成CPU的浪费。 CMCI 提供了一种机制,当
corrected error发生侧次数到达阀值的时候,就会发送一个信号给本地的CPU来通知系统软件。当然,系统软件可以通过
IA32_MCi_CTL2 MSRs来控制该特性的开关
默认的情况下,CMCI是被禁止的。 在
IA32_MCG_CAP[10] = 1的情况下,系统软件需要使能每一个bank的
IA32_MCi MSR的
CMCI位来让芯片通过中断报告
hardware corrected errors
系统软件可以通过
IA32_MCi_CTL2 MSR来分别开关每个bank的CMCI特性,并且可以对
IA32_MCi_CTL2 MSR中的阀值数进行设置。
CR4.MCE的值和
IA32_MCi_CTL MSR的值不会影响到CMCI特性
可以通过向
IA32_MCi_CTL2[14:0]中写入希望的阀值的方法,来探
知某个bank中是否已经设置了阀值。如果可以写入并保存,则该bank支持设置阀值(同时CMCI也一定是支持的)。如果写入后,I
A32_MCi_CTL2[14:0]都是0,那么就不支持设置阀值。同样,软件向
MCi_CTL2[30]写入1,来判断是否可以发送CMCI新号。如果写入后,
MCi_CTL2[30]=0,那么该BANK就不支持CMCI,如果
MCi_CTL2[30]=1,那么CMCI就是支持并使能的。
相关文章