简称
MCA:MACHINE-CHECK ARCHITECTURE
MSR:model specific register
RAS:reliability, availability, and serviceability

硬件三种类型错误:corrected、uncorrected、deferred;
corrected:符合硬件预期,不需要软件中断参与,只记录信息即可;
uncorrected:正常流程不会发生,需要软件中断参与;
deferred:不符合预期,而且对系统架构、处理器核、当前进程有影响;

AMD MCA MSRs:

MCG_CAP:

MCG_STATUS:

MCG_CTL:

软件控制bank 记录error 的使能。
MCA_INTR_CFG:

CPU Watch dog:

TB:00:millisecond,01:microsecond;

MSR 分配:
MC0_CTL:400h;MC0_STATUS:401h;MC0_ADDR:402h;MC0_MISC0:403h;

MCA Overflow:
MCi_STATUS[OVER],软件写1,指示有新的error 是否覆盖之前的error。
不同的error 级别可以overwrite,条件为:

硬件通过写入MCi_STATUS[VAL]为1表示当前bank 有error,软件读取寄存器清除。
CPUID Fn8000_0007_EBX[McaOverflowRecov]为1表示当前MCA overflow。
MCi_STATUS[PCC]指示当前系统是否继续。

MCA Recovery:
CPUID Fn8000_0007_EBX[SUCCOR]为1表示当前MCA Recovery;
如果有uncorrect error 发生,系统继续运行。

MCi_CTL :
一个bank 中的每个error 源头的EN配置,
MCi_STATUS:





当有error 的时候,处理器写MCi_STATUS[VAL]为1。

MCi_ADDR:
处理器用于记录错误发生的地址,此处地址可以是一个虚拟地址、物理地址、local 物理位置。

MCi_MISC0:
Machine-Check Miscellaneous 0 寄存器用于记录处理器写入的其他错误信息;
一般Misc0用作错误阈值,硬件提供的阈值为错误个数、达到配置阈值的APIC中断;

MCi_MISCj:
MCi_MISC0[BLKP]指示有额外MCi_MISCj寄存器,如果为0 表示没有额外信息;
如果为1且CPUID Fn8000_0007_EBX[ScalableMca]=1参考MCAX;
如果为非0且CPUID Fn8000_0007_EBX[ScalableMca]= 0~8,表示当前bank 外加的 MCi_MISCj寄存器,地址:



MCAX:
CPUID Fn8000_0007_EBX[ScalableMca]为1。每个thread 最多支持64个MCA bank,每个bank最多16个MCAX 寄存器,
软件识别MCA和MCAX通过读取MCA_CONFIG[Mcax]=1
MCAX bank 寄存器

MCAX configure:

MCA IP 识别
MCA type、HWID、Instance ID 识别指定bank 的保存的信息

MCA Syndrome
MCA_SYND寄存器表示当前有一个syndrome 在MCA_STATUS或者MCA_DESTAT,MCA_STATUS[SYNDV]或者MCA_DESTAT[SYNDV]为1;

MCA Deferred
软件可以识别出有一个deferred error,即使晚到达或者有更高优先级error,错误将保存到MCA_DESTAT寄存器,软件处理完deferred error后,清除寄存器。

MCA deferred 地址寄存器
MCA_DESTAT 记录错误,对应 MCA_DEADDR记录deferred error 的错误地址,格式跟MCA_ADDR相同;
MCA_DESTAT[Valid]=1 和 MCA_DESTAT[ADDRV]=1 才有效;

MCA Misc寄存器1-4:
软件设置,MCA_MISC[4-1]数据结构跟MCA_MISC0 相同;

posted on 2024-06-10 06:25  向前走向钱看  阅读(233)  评论(0)    收藏  举报