PCIe错误上报

PCIe错误上报

2024-05-16
bios
  • PCIe定义了两种错误报告机制,baseline error reporting capabilities 和advanced error reporting capability(AER)。所有的PCIe设备都要支持baseline error reporting,AER是可选的。
  • PCIe定义了两种错误,UCE和CE,其中UCE可以进一步分为Fatal UCE和Non-Fatal UCE。

错误检测机制 #

  • 包含三种错误检测机制

    • Completion Status(用来向requester上报错误)
    • Error Messages(用来向HOST上报错误)
    • Error Forwarding(data poisoning)
  • 其中BIOS侧用的比较多的是Error Messages,可以用来向主机报告错误。

  • EP上的Error Messages会被发送到相应的Root Ports。

  • Error Message包括ERR_COR(CE)、ERR_NONFATAL(NON-FATAL UCE)、ERR_FATAL(FATAL UCE)

Error Messages #

  • EP上的Error Messages会被发送到相应的Root Ports。
  • Error Message包括ERR_COR(CE)、ERR_NONFATAL(NON-FATAL UCE)、ERR_FATAL(FATAL UCE)

  • Root Port是一个PCI-PCI Bridge结构,是从PCIe Root Complex出来的PCIe Link。

  • PCIe配置空间为0~0xFFF,其中0~0xFF为PCI兼容配置空间(PCI-compatible region),0x40~0xFF会存放Capability结构,PCI Express Capability就位于0x40~0xFF的位置。0x100~0xFFF是PCIe扩展配置空间(PCI Express Extended Configuration Space)。PCI兼容配置空间可以通过传统的IO寄存器和ECAM访问,PCIe扩展配置空间只能通过ECAM访问(PCI Express Enhanced Configuration Access Mechanism)

  • PCI Express Capability的结构如下图所示,所有的PCIe设备都需要支持该Capability,

  • PCI Express Extended Capability寄存器位于PCI配置空间的0xFF之后,在0x100~0xFFF这段空间。AER寄存器就位于这段空间。

  • 往AER的CE MASK寄存器对应BIT写1,可以屏蔽对应CE上报。

  • error messages生成的流程

  • error messages上报流程

  • NON-FATAL 的错误可能是不需要执行任何的恢复动作的,比如软件尝试从一个不存在的设置执行一个读取操作,Completion中的UR Status将会报告一个错误,此时如果软件为Completer额外产生一个ERR_NONFATAL Message,就可能会导致系统运行异常;Advisory Non-Fatal Error cases可以让在产生NON_FATAL ERROR时发送ERR_COR Message。如果将ERR的严重级别设置为FATAL,ERR将会以ERR_FATAL发出该错误。