searchusermenu
  • 发布文章
  • 消息中心
点赞
收藏
评论
分享
原创

内核RAS处理流程分析

2025-06-06 08:25:47
3
0

1. 背景描述

Linux内核通过多种机制实现RAS功能,包括硬件错误检测、错误处理与恢复、以及错误日志记录等。本文以4.19内核x86版本为基础,详细分析Linux内核中的硬件RAS故障处理流程,涵盖从错误检测到错误恢复的全过程。

2. 故障产生

硬件RAS故障,如CPU、内存、PCIE等硬件故障,通常由于制造缺陷、过热、电压不稳、物理损坏、位翻转、ECC失效等原因导致。

根据故障类型是否可修复,通常又分为CE(可修复)故障和UE(不可修复)故障。

3. 故障上报

硬件在检测到故障后,如果发现是CE故障,则自动进行修复处理,并通过中断上报给内核进行事件记录;如果发现是UE故障,则直接上报给内核处理,内核再根据故障的严重程度,采取对应的如隔离、复位等处理策略。

注:这里为了流程清晰,有意忽略了BMC对于故障处理的影响。

因此无论是哪种故障类型,最终都会通过中断的方式上报给内核,而x86上常见的故障处理中断包括:

Ø MCE_VECTOR:MCE中断

其中MCE指Machine Check Exception,是x86 MCA机制在检测到硬件错误时触发的一种中断,支持检测CPU、内存、总线、缓存等硬件故障。

MCA将硬件错误分为多个Bank,每个Bank对应一类硬件组件(如CPU、内存、总线等),并包含一组寄存器用于记录错误的详细信息。

MCE中断处理上下文,可通过读取MCA记录的这些错误寄存器,感知产生硬件故障的具体原因,并执行相应的处理动作。

Ø DEFERRED_ERROR_VECTOR:延迟中断

该中断是AMD芯片特有处理流程,当MCA机制检测到低级别硬件故障时,可能会先将错误信息记录到MCA Bank寄存器,再延后到合适的时机上报中断并处理,中断上报时机可由操作系统通过MCA配置寄存器控制。

Ø THRESHOLD_APIC_VECTOR:阈值中断

用于当硬件错误次数达到一定阈值时再触发中断处理,通常用于处理硬件CE故障,其故障信息同样保存在MCA的Bank寄存器。

Ø THERMAL_APIC_VECTOR:温度中断

专门用于处理温度相关的中断事件,例如用于是实现cpu的过热保护机制等。

Ø ERROR_APIC_VECTOR:错误中断

用于处理APIC内部的错误处理中断,例如中断投递失败等。

Ø devm_request_threaded_irq(dev->irq,aer_irq, aer_isr):AER中断

用于处理PCIE相关的AER故障中断。

 

3.1硬件故障中断上报流程

4. 故障处理

4.1. MCE中断

4.1.1. MCE处理流程

 

4.1.1 MCE故障处理流程

4.1.2. MCE修复流程

 

4.1.2 MCE故障修复流程

 

0条评论
0 / 1000
c****y
5文章数
0粉丝数
c****y
5 文章 | 0 粉丝
原创

内核RAS处理流程分析

2025-06-06 08:25:47
3
0

1. 背景描述

Linux内核通过多种机制实现RAS功能,包括硬件错误检测、错误处理与恢复、以及错误日志记录等。本文以4.19内核x86版本为基础,详细分析Linux内核中的硬件RAS故障处理流程,涵盖从错误检测到错误恢复的全过程。

2. 故障产生

硬件RAS故障,如CPU、内存、PCIE等硬件故障,通常由于制造缺陷、过热、电压不稳、物理损坏、位翻转、ECC失效等原因导致。

根据故障类型是否可修复,通常又分为CE(可修复)故障和UE(不可修复)故障。

3. 故障上报

硬件在检测到故障后,如果发现是CE故障,则自动进行修复处理,并通过中断上报给内核进行事件记录;如果发现是UE故障,则直接上报给内核处理,内核再根据故障的严重程度,采取对应的如隔离、复位等处理策略。

注:这里为了流程清晰,有意忽略了BMC对于故障处理的影响。

因此无论是哪种故障类型,最终都会通过中断的方式上报给内核,而x86上常见的故障处理中断包括:

Ø MCE_VECTOR:MCE中断

其中MCE指Machine Check Exception,是x86 MCA机制在检测到硬件错误时触发的一种中断,支持检测CPU、内存、总线、缓存等硬件故障。

MCA将硬件错误分为多个Bank,每个Bank对应一类硬件组件(如CPU、内存、总线等),并包含一组寄存器用于记录错误的详细信息。

MCE中断处理上下文,可通过读取MCA记录的这些错误寄存器,感知产生硬件故障的具体原因,并执行相应的处理动作。

Ø DEFERRED_ERROR_VECTOR:延迟中断

该中断是AMD芯片特有处理流程,当MCA机制检测到低级别硬件故障时,可能会先将错误信息记录到MCA Bank寄存器,再延后到合适的时机上报中断并处理,中断上报时机可由操作系统通过MCA配置寄存器控制。

Ø THRESHOLD_APIC_VECTOR:阈值中断

用于当硬件错误次数达到一定阈值时再触发中断处理,通常用于处理硬件CE故障,其故障信息同样保存在MCA的Bank寄存器。

Ø THERMAL_APIC_VECTOR:温度中断

专门用于处理温度相关的中断事件,例如用于是实现cpu的过热保护机制等。

Ø ERROR_APIC_VECTOR:错误中断

用于处理APIC内部的错误处理中断,例如中断投递失败等。

Ø devm_request_threaded_irq(dev->irq,aer_irq, aer_isr):AER中断

用于处理PCIE相关的AER故障中断。

 

3.1硬件故障中断上报流程

4. 故障处理

4.1. MCE中断

4.1.1. MCE处理流程

 

4.1.1 MCE故障处理流程

4.1.2. MCE修复流程

 

4.1.2 MCE故障修复流程

 

文章来自个人专栏
文章 | 订阅
0条评论
0 / 1000
请输入你的评论
0
0