pcie设备的FDM 故障是如何监控的

基于2512版本构建的openUBMC

在pcie_device组件中看到这些资源协作接口:

请问是bios会监控pcie设备的这些错误(CE\UCE\FE\降带宽\降速)然后报给BMC么?

答案内容由AI生成,仅供参考:

总结

PCIe设备的FDM故障监控是一个BIOS与BMC协同工作的过程:

  1. BIOS在启动阶段负责对PCIe设备进行全面检测,包括链路建立、功能验证等,并将发现的错误(如UCE、降带宽、降速率等)通过专用接口上报给BMC。

  2. BMC/FDM在系统运行时持续监控PCIe设备的各种状态,通过bmc.kepler.Systems.PCIeDevices.PCIeDevice.RAS接口收集运行时错误(如CE、UCE、超时错误等)。

  3. 两者通过标准化的接口(如SetDiagnosticFaultSetLinkSpeedReduced等)进行信息交互,确保故障能够被及时发现、记录和处理。

因此,这不是简单的"谁监控"的问题,而是一个分阶段、协同式的故障检测体系,BIOS负责启动阶段的深度诊断,BMC负责全生命周期的状态监控,共同保障系统的可靠性。

点击此处查看详细分析解答

PCIe设备FDM故障监控机制分析

在基于2512版本构建的openUBMC系统中,PCIe设备的FDM(Fault Detection and Management)故障监控是一个多层次、协同工作的机制。以下将详细说明其工作原理。

FDM监控架构

核心监控接口

根据提供的代码和上下文信息,pcie_device组件提供了多个与FDM相关的资源协作接口,用于接收和处理PCIe设备的各类故障事件:

对外接口
## 资源协作接口
- PCIeDevice
    - Path: `/bmc/kepler/Systems/${SystemId}/PCIeDevices/${Id}`
    - Interface: `bmc.kepler.Systems.PCIeDevices.PCIeDevice`

        | 方法  | 描述  |
        |:------------:|:------------:|
        | SetPcieErrorStatus | 根据错误类型设置不同错误事件属性状态 |
        | SetUCEByBIOS | 设置不可纠正错误标识 |
        | SetBandwidthReduction | 设置降带宽事件标识 |
        | SetLinkSpeedReduced | 设置链路降速事件标识 |
        | SetDiagnosticFault | 设置严重故障告警标识 |
        | SetPredictiveFault | 设置预故障事件标识 |
        | GetDeviceName | PCIe设备丝印信息获取 |
        | GetPCIeCardNum | 获取PCIeCard数量 |
        | SetFaultByBios | 设置FaultByBios属性值 |

BIOS与BMC的协同监控机制

BIOS的角色

是的,BIOS在PCIe设备的FDM故障监控中扮演着关键角色。

从系统设计来看,BIOS负责在系统启动阶段对PCIe设备进行初始化和诊断,并将发现的各类错误上报给BMC。这种分工基于两个不同的运行阶段:

  1. 启动阶段:由BIOS负责监控
  2. 运行阶段:由BMC/FDM持续监控

BIOS监控的具体内容

通过分析可知,BIOS主要监控以下几类PCIe错误:

  • 不可纠正错误(UCE): 通过SetUCEByBIOS方法上报
  • 降带宽事件: 通过SetBandwidthReduction方法上报
  • 链路降速事件: 通过SetLinkSpeedReduced方法上报
  • 严重故障: 通过SetDiagnosticFault方法上报

如文档所述:“BIOS通过WritePcieCardBdfToBmc、WriteOcpCardBdfToBmc将设备的BDF号传给BMC。” 这表明BIOS与BMC之间存在明确的通信机制。

故障信息的传递路径

BIOS通过IPMI命令将PCIe设备的状态信息传递给BMC:

"WritePcieCardBdfToBmc": "设置PCIE卡的BDF",
"WriteOcpCardBdfToBmc": "设置OCP卡的BDF"

这一机制也延伸到了错误报告:不仅设备识别信息,连同运行过程中检测到的错误状态,都会通过类似机制上报。

阶段性差异说明

根据社区讨论中的关键信息:

“FaultByBios是由BIOS在启动阶段上报的故障\nSystemError,ParityError、CorrectableError等是在描述的是PCIE在OS运行态时故障信息”

这表明:

  • FaultByBios属性记录的是启动阶段由BIOS上报的故障
  • SystemError, ParityError, CorrectableError等是在操作系统运行时由FDM组件监测的故障

监控属性对照表

错误类型 对应属性 上报来源 监控阶段
可纠正错误(CE) CorrectableError FDM组件 运行时
不可纠正错误(UCE) UncorrectableError FDM/BIOS 启动/运行
致命错误(FE) FatalError FDM/BIOS 启动/运行
降带宽事件 BandwidthReduction BI°FDM 启动/运行
链路降速 LinkSpeedReduced BI°FDM 启动/运行
严重故障 DiagnosticFault BI°FDM 启动/运行
预故障 PredictiveFault FDM 运行时

总结

PCIe设备的FDM故障监控是一个BIOS与BMC协同工作的过程:

  1. BIOS在启动阶段负责对PCIe设备进行全面检测,包括链路建立、功能验证等,并将发现的错误(如UCE、降带宽、降速率等)通过专用接口上报给BMC。

  2. BMC/FDM在系统运行时持续监控PCIe设备的各种状态,通过bmc.kepler.Systems.PCIeDevices.PCIeDevice.RAS接口收集运行时错误(如CE、UCE、超时错误等)。

  3. 两者通过标准化的接口(如SetDiagnosticFaultSetLinkSpeedReduced等)进行信息交互,确保故障能够被及时发现、记录和处理。

因此,这不是简单的"谁监控"的问题,而是一个分阶段、协同式的故障检测体系,BIOS负责启动阶段的深度诊断,BMC负责全生命周期的状态监控,共同保障系统的可靠性。

相关链接:

  1. PCIe设备以及通用PCIe标卡驱动规范v0.1(加工中)
  2. 【公示中,下次评议时间7.28】网卡驱动规范v0.1
  3. PCIE卡加载问题
  4. 关于PCIeRASCollector的问题
  5. bios | 文档中心 | openUBMC

您好,这些告警均由Bios生成,上报给Sdk,再由Sdk调用pcie_device的rpc方法进行告警。