x86服务器MCE(Machine Check Exception)问题

http://ilinuxkernel.com/?p=303

MCE现象

IntelPentium 4XenonP6系列处理器中实现了机器检查(Machinecheck)架构,提供能够检测和报告硬件(机器)的错误机制,如系统总线错误、ECC错误、奇偶校验错误、缓存错误、TLB错误等。它包括一直MSRModel-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 ExceptionBank 0(5)的值分别对应IA32_MCG_STATUS MSRIA32_MCi_STATUS寄存器。

则对应的寄存器值为:

IA32_MCG_STATUS MSR寄存器的值为0000000000000004

IA32_MC0_STATUS MSR的值为f200000410000800

IA32_MC5_STATUS MSR的值为f200001044100e0f

 
 

根据MSR的值,对照Intel编程手册和Intel其他资料,就可以比较容易找出MCE原因。

  • 2
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值