http://ilinuxkernel.com/?p=303
MCE现象
Intel在Pentium
4、Xenon和P6系列处理器中实现了机器检查(Machinecheck)架构,提供能够检测和报告硬件(机器)的错误机制,如系统总线错误、ECC错误、奇偶校验错误、缓存错误、TLB错误等。它包括一直MSR(Model-Specific
Registers)寄存器,用来设置机器检查和额外的bank MSR记录错误。
当机器检查到不可纠正的machine-check错误时,就触发一个machine-check异常。machine-check架构不允许在出现MCE后处理器重启,但MCE处理程序可以从MSR寄存器收集相关信息。
CPU 7: Machine Check Exception: 5 Bank 0: b200004010000400
RIP !INEXACT! 10:<ffffffff8010f16e> {mwait_idle+0x5e/0×90}
TSC 1952dbeebcc8
Kernel panic: Machine check
Reconfiguring memory bank information….
This may take a while….
done waiting: 3 cpus not responding
Warning: Non-empty request queue
I/O requests in flight at dump time
CPU 7: Machine Check Exception: 4 Bank 0: f200004040000400
RIP
!INEXACT! 10:<ffffffff8011ef69>
MCE错误判断原则
凡是内核死机打印“Machine
Check Exception“或内核栈信息中打印有do_machine_check()函数,均为MCE问题。
MCE错误来源
-
PCI-E设备信号质量/时钟
-
CPU芯片损坏/设计BUG
CPU Cache损坏或其它故障
-
CPU可能的缺陷
如CPU生产制造过程中带来的缺陷
-
内存坏/接触不良
-
BIOS配置不当
- OS/MCE中断程序Bug
-
环境因素,如温度/湿度

MCE错误码解析

以上面MCE错误为例,Machine
Check Exception和Bank 0(5)的值分别对应IA32_MCG_STATUS
MSR、IA32_MCi_STATUS寄存器。
则对应的寄存器值为:
IA32_MCG_STATUS MSR寄存器的值为0000000000000004
IA32_MC0_STATUS MSR的值为f200000410000800
IA32_MC5_STATUS MSR的值为f200001044100e0f
根据MSR的值,对照Intel编程手册和Intel其他资料,就可以比较容易找出MCE原因。
本文详细介绍了Intel处理器中的Machine Check Exception (MCE) 错误,包括MCE的触发机制、错误判断原则、常见来源及如何解析错误码等内容。
问题&spm=1001.2101.3001.5002&articleId=18399991&d=1&t=3&u=d7b99660fc3c485fb8958e7b6dfd66a2)
4720

被折叠的 条评论
为什么被折叠?



