解释
这是一段关于高级错误报告的信息,其中包含多个字段和值。以下是每个字段的详细解释:
- Capabilities: [100 v1] Advanced Error Reporting
- 这是该设备支持高级错误报告的能力标识符。
- UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
- 这是未经校验的错误状态(Uncorrectable Error Status)位域。DLP表示Data Link Protocol错误;SDES表示Surprise Down Error Status;TLP表示Transaction Layer Packet错误;FCP表示Flow Control Protocol错误;CmpltTO表示Completion Timeout错误;CmpltAbrt表示Completion Abort错误;UnxCmplt表示Unexpected Completion错误;RxOF表示Receiver Overflow错误;MalfTLP表示Malformed TLP错误;ECRC表示End-to-End CRC错误;UnsupReq表示Unsupported Request错误;ACSViol表示ACS Violation错误。
- UEMsk: DLP- SDES+ TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq+ ACSViol-
- 这是未经校验的错误掩码(Uncorrectable Error Mask)。与UESta类似,但只有在相应位上置位时才会触发中断或记录日志。
- UESvrt: DLP+ SDES- TLP+ FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
- 这是已经校验的错误状态(Correctable Error Status)位域。DLP+表示Data Link Protocol错误已被纠正;SDES-表示Surprise Down Error Status未发生;TLP+表示Transaction Layer Packet错误已被纠正;FCP+表示Flow Control Protocol错误已被纠正;RxOF+表示Receiver Overflow错误已被纠正;MalfTLP+表示Malformed TLP错误已被纠正;ECRC-表示End-to-End CRC错误未被纠正;UnsupReq-表示Unsupported Request错误未被纠正;ACSViol-表示ACS Violation错误未被纠正。
- CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
- 这是已知的可纠正错误(Correctable Error Status)位域。RxErr表示接收错误;BadTLP表示错误格式的TLP;BadDLLP表示无效的DLLP;Rollover表示计数器溢出;Timeout表示超时;NonFatalErr-表示非致命错误。
- CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
- 这是已知的可纠正错误掩码(Correctable Error Mask)。与CESta类似,但只有在相应位上置位时才会触发中断或记录日志。
- AERCap: First Error Pointer: 00, ECRCGenCap+ ECRCGenEn- ECRCChkCap+ ECRCChkEn-
MultHdrRecCap- MultHdrRecEn- TLPPfxPres- HdrLogCap+- 这是高级错误报告的能力寄存器。First Error Pointer表示第一个错误指针的位置;ECRCGenCap+表示设备支持生成ECRC校验码;ECRCGenEn-表示设备未启用ECRC校验码生成;ECRCChkCap+表示设备支持检查ECRC校验码;ECRCChkEn-表示设备未启用ECRC校验码检查;MultHdrRecCap-表示设备支持多个头部记录;MultHdrRecEn-表示设备未启用多个头部记录;TLPPfxPres-表示设备支持TLP前缀保留;HdrLogCap+表示设备支持头部日志记录。
- HeaderLog: 4a000002 65000008 fc200000 00000000
- 这是高级错误报告的头部日志(Header Log)。它记录了最近发生的错误信息,其中每个32位数字都代表一条错误记录。该示例中有四条记录。
- RootCmd: CERptEn- NFERptEn- FERptEn-
- 这是高级错误报告的命令寄存器。CERptEn-表示禁用可纠正错误报告;NFERptEn-表示启用非致命错误报告;FERptEn-表示启用致命错误报告。
- RootSta: CERcvd- MultCERcvd- UERcvd- MultUERcvd-
FirstFatal- NonFatalMsg- FatalMsg- IntMsg 0- 这是高级错误报告的状态寄存器。CERcvd-表示未收到可纠正错误;MultCERcvd-表示收到多个可纠正错误;UERcvd-表示收到未经校验的错误;MultUERcvd-表示收到多个未经校验的错误;FirstFatal-表示尚未收到致命错误;NonFatalMsg-表示存在非致命错误;FatalMsg-表示存在致命错误;IntMsg 0表示无中断信息。
- ErrorSrc: ERR_COR: 0000 ERR_FATAL/NONFATAL: 0000
- 这是错误源(Error Source)寄存器。ERR_COR表示可纠正错误;ERR_FATAL/NONFATAL表示致命或非致命错误。在这个例子中,都没有发生错误。
headerlog解释
HeaderLog是高级错误报告的头部日志,它记录了最近发生的错误信息。在这个示例中,HeaderLog由四个32位数字组成:4a000002、65000008、fc200000和00000000。
每个32位数字代表一条错误记录,其中包含以下字段:
- DW0: 错误状态(Error Status)。DW0的最高位(第31位)表示错误是否已经校验,如果该位为1,则表示该错误已经被纠正,如果该位为0,则表示该错误未经校验。DW0的其他位表示错误的类型和详细信息。
- DW1: 物理地址(Physical Address)。DW1记录引起错误的物理地址。
- DW2: 参考标签(Reference Tag)。DW2记录与引起错误的事务相关的参考标签(Reference Tag)。
- DW3: 数据(Data)。DW3记录引起错误的数据。
具体来说,对于示例中的每个32位数字:
- 4a000002:表示一个未经校验的错误,错误类型为TLP错误。
- 65000008:表示一个未经校验的错误,错误类型为TLP错误。
- fc200000:表示一个未经校验的错误,错误类型为TLP错误。
- 00000000:表示没有错误发生。
每个设备的HeaderLog格式可能会有所不同,但通常都会包含类似的字段,用于记录错误的类型、位置和详细信息。