Header Log Register (Offset 1Ch) 4DW寄存器,用来存放异常TLP的head。PCIe协议要求支持AER的设备,至少支持存放一个head。 其对应格式为: 通过lspci -vvvs xxx命令可以查看设备的HeaderLog,例如: [root@localhost~]# lspci -vvvs 00:1c.200:1c.2 PCI bridge:IntelCorporationDevice7aba(rev11)(prog-if00[...
配置空间中的高级错误报告结构中包含有一个4DW的子空间,用于缓存接收到的,发生不可校正错误的(未被屏蔽的)的TLP的包头。PCIe Spec规定,当设备支持AER功能时,必须有能力至少缓存一个TLP包头(4DW)。当然,有些设备可能支持缓存更多的TLP包头。该子空间被称...
Advanced Error Reporting(AER),相信做过PCIe问题定位的同学都不陌生。当PCIe设备插到某个主机上,出现问题时,需要分析主机和设备的报错信息。但是主机对我们来说近乎是个黑盒,能获取并能解析的主要信息就是AER。我们可以通过读取主机的配置空间获得AER信息,同时如果主机检测到了AER,主机日志上可能也会打印相关信息(为...
4.2多条错误的处理(支持AER设备) 对于一个设备如果同时收到多条错误,其AER状态寄存器的位会置上,直到软件清理或者复位清除。即使AER的多个状态位被置起,但是First Error Pointer寄存器和Header Log寄存器中记录的信息还是第一个错误的信息。即使这样还是应该及时的处理First Error Pointer寄存器和Header Log寄存器的信息,...
PCIe Spec规定,当设备支持AER功能时,必须有能力至少缓存一个TLP包头(4DW)。当然,有些设备可能支持缓存更多的TLP包头。该子空间被称为包头缓存寄存器(Header Log Register),其支持的错误类型如下图所示。 在PCIe总线拓扑结构中,Root是所有其他PCIe设备错误报告的目标(Target)。当Root接收到来自其他PCIe设备的错误消息(...
以及Uncorrectable错误的致命性判断。关键的AER寄存器如Advanced Error Capabilities and Control Register、Header Log Register、Root Error Command Register等,提供了错误信息的具体记录和控制功能,帮助我们跟踪和定位问题源头。理解AER的工作原理,对于有效地处理PCIe设备问题至关重要。
PCIe AER –Advanced Error Reporting,这是PCIe的新特性,发生故障时可以通过中断报告故障的详细信息,需要硬件、BIOS和driver的支持才行,但现在仍有许多硬件不支持。 SMI – System Management Interrupt,这是给BIOS/firmware使用的一个特殊中断,这个中断不是直接给OS用的。触发SMI中断以后,系统进入SMM模式-System Managem...
(rp,aer+PCI_ERR_ROOT_STATUS,&e_src.status);// 检查是否有 UNCOR COR MULTI_COR MULTI_UNCOR 置位if(!(e_src.status&AER_ERR_STATUS_MASK))returnIRQ_NONE;// 读取 Requester IDpci_read_config_dword(rp,aer+PCI_ERR_ROOT_ERR_SRC,&e_src.id);// 错误状态寄存器,写 1 清零pci_write_config...
2.2 PCIe AER Driver Architecture 2.2.1 PCIe Error Introduction 2.2.2 PCI Express AER Driver Designed To Handle PCI Express Errors 2.2.2.1 AER Initialization Procedures 2.2.2.2 Handle PCI Express Correctable Errors 2.2.2.3 Handle PCI Express Non-Fatal Errors 2.2.2.4 Handle PCI Express Fatal Errors...
Then create an aer file with following information. Raw AER BUS 4 DEV 0 FN 1 COR_STATUS BAD_TLP HEADER_LOG 0 1 2 3 where the numbers in the line of BUS equals xx = BUS number, YY = DEV number, and z = FN number in lspci output. ...