PCIe错误上报
2024-05-16
- 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发出该错误。