PCIe Spec规定,当设备支持AER功能时,必须有能力至少缓存一个TLP包头(4DW)。当然,有些设备可能支持缓存更多的TLP包头。该子空间被称为包头缓存寄存器(Header Log Register),其支持的错误类型如下图所示。 在PCIe总线拓扑结构中,Root是所有其他PCIe设备错误报...
小型机上发生无法恢复的硬件故障会触发一个单一的中断,只要触发这个中断就可以断定是硬件故障,并且伴随中断提供了充分的故障信息,便于定位故障。不像 x86这样有多种中断类型的可能,MCE和AER倒也罢了,最后所有其它类型的硬件故障都归入NMI,而NMI是一个过度使用的公用中断,软件也用、硬件 也用,perf profiling也用,watch...
为了服务 PCI Express 根端口上的 PCI Express AER 中断,PCI Express AER 驱动程序注册其中断服务处理程序。一旦一个 PCI Express 根端口收到来自下游设备的错误报告, PCI Express 根端口发送一个CPU 的中断,Linux 内核将从中中断调用PCI Express AER 中断服务处理程序。 大多数 AER 处理工作应在一个过程上下文完成...
中断服务程序通过PCIe AER机制调用线程进行错误处理。每个PCIe Root Port都会被分配一个中断向量,以便处理可能出现的AER中断。为了响应这些中断,AER驱动程序会注册相应的中断服务处理程序。一旦Root Port从下游设备接收到错误报告,它会触发一个中断,该中断会调用已注册的PCIe AER中断服务处理程序。驱动程序为每个AER Ro...
对于enable的error reporting,Root Port device会产生相应的中断。 AER driver即负责处理该中断。如下图: Initialization 当机器启动时,系统会为每个PCIe Root port分配interrupt vector(s),PCIe AER Driver会向kernel注册其interrupt service handler, 当PCIe Root port从下游device接收到error message,Root port会发送...
可以看到,AER主要分为两种error:Uncorrectable和Correctable。(详细的错误的解释可以看协议6.2.7章节) 1 Uncorrectable Error Uncorrectable Error有如下类型: 1.1Data Link Protocol Error PCIe协议要求,在设备收到TLP包后,需要返回对应的Ack或者Nak(认为TLP有异常)。考虑链路效率,不需要每一个TLP都返回一个Ack,可以收到...
AER AER(Advanced Error Reporting)是一种用于检测和报告PCIe设备中发生的错误的机制,它允许PCIe设备检测到并报告各种类型的错误。错误类型包含Correctable Errors 和Uncorrectable errors两种,其中Uncorrectable errors下面又分为ERR_FATAL和ERR_NONFATAL。 Correctable Errors:可纠正错误是指错误发生后,硬件可以自动恢复,不影...
PCIe Spec规定,当设备支持AER功能时,必须有能力至少缓存一个TLP包头(4DW)。当然,有些设备可能支持缓存更多的TLP包头。该子空间被称为包头缓存寄存器(Header Log Register),其支持的错误类型如下图所示。 在PCIe总线拓扑结构中,Root是所有其他PCIe设备错误报告的目标(Target)。当Root接收到来自其他PCIe设备的错误消息(...
· 为Root通过中断报告接收到的错误消息提供了标准化的控制机制 · 可以定位错误源在PCIe体系结构中的位置 · 能够独立地屏蔽某种(或者多种)错误类型的报告 配置空间中的AER相关寄存器结构如下图所示: 前面的文章中多次提到过,ECRC的产生于校检需要AER的支...