Linux:PCIe的capability扩展空间字段解释

以下为PCIe的截图示例

root@ngnodeb \~\]# lspci -vvv -d 8086:0d5c 1b:00.0 Processing accelerators: Intel Corporation Device 0d5c (prog-if 01) Subsystem: Intel Corporation Device 0000 Control: I/O- Mem+ BusMaster- SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR+ FastB2B- DisINTx- Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast \>TAbort- \SERR- \

Capabilities: [44] Power Management version 3

Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold-)

Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=0 PME-

Capabilities: [4c] Express (v2) Endpoint, MSI 00

DevCap: MaxPayload 512 bytes, PhantFunc 0, Latency L0s <64ns, L1 <1us

ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset+ SlotPowerLimit 25.000W

DevCtl: Report errors: Correctable- Non-Fatal- Fatal- Unsupported-

RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop+ FLReset-

MaxPayload 256 bytes, MaxReadReq 512 bytes

DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr- TransPend-

LnkCap: Port #0, Speed 8GT/s, Width x16, ASPM L0s L1, Exit Latency L0s <4us, L1 <1us

ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp+

LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk-

ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt-

LnkSta: Speed 8GT/s, Width x16, TrErr- Train- SlotClk- DLActive- BWMgmt- ABWMgmt-

DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported

DevCtl2: Completion Timeout: 50us to 50ms, TimeoutDis-, LTR-, OBFF Disabled

LnkCtl2: Target Link Speed: 8GT/s, EnterCompliance- SpeedDis-

Transmit Margin: Normal Operating Range, EnterModifiedCompliance- ComplianceSOS-

Compliance De-emphasis: -6dB

LnkSta2: Current De-emphasis Level: -6dB, EqualizationComplete+, EqualizationPhase1+

EqualizationPhase2+, EqualizationPhase3+, LinkEqualizationRequest-

Capabilities: [88] MSI: Enable- Count=1/32 Maskable+ 64bit+

Address: 00000000fee000d8 Data: 0000

Masking: 00000000 Pending: 00000000
Capabilities: [100 v2] Advanced Error Reporting
UESta: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UEMsk: DLP- SDES- TLP- FCP- CmpltTO- CmpltAbrt- UnxCmplt- RxOF- MalfTLP- ECRC- UnsupReq- ACSViol-
UESvrt: DLP+ SDES- TLP- FCP+ CmpltTO- CmpltAbrt- UnxCmplt- RxOF+ MalfTLP+ ECRC- UnsupReq- ACSViol-
CESta: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr-
CEMsk: RxErr- BadTLP- BadDLLP- Rollover- Timeout- NonFatalErr+
AERCap: First Error Pointer: 00, GenCap- CGenEn- ChkCap- ChkEn-

Capabilities: [148 v1] Virtual Channel

Caps: LPEVC=0 RefClk=100ns PATEntryBits=1

Arb: Fixed- WRR32- WRR64- WRR128-

Ctrl: ArbSelect=Fixed

Status: InProgress-

VC0: Caps: PATOffset=00 MaxTimeSlots=1 RejSnoopTrans-

Arb: Fixed- WRR32- WRR64- WRR128- TWRR128- WRR256-

Ctrl: Enable+ ID=0 ArbSelect=Fixed TC/VC=01

Status: NegoPending- InProgress-

Capabilities: [248 v1] #19

Capabilities: [298 v1] Alternative Routing-ID Interpretation (ARI)

ARICap: MFVC- ACS-, Next Function: 0

ARICtl: MFVC- ACS-, Function Group: 0

Capabilities: [2a0 v1] Single Root I/O Virtualization (SR-IOV)

IOVCap: Migration-, Interrupt Message Number: 000

IOVCtl: Enable- Migration- Interrupt- MSE- ARIHierarchy+

IOVSta: Migration-

Initial VFs: 16, Total VFs: 16, Number of VFs: 0, Function Dependency Link: 00

VF offset: 256, stride: 1, Device ID: 0d5d

Supported Page Size: 00000553, System Page Size: 00000001

Region 0: Memory at 00000000aa000000 (64-bit, non-prefetchable)

VF Migration: offset: 00000000, BIR: 0

Capabilities: [3f8 v1] Vendor Specific Information: ID=0000 Rev=1 Len=308 <?>

Kernel driver in use: igb_uio

解释

说明:

UEMsk 掩码寄存器中的各个位通常用于指示设备的错误状态或支持的功能,而不是直接表示已发生的问题。因此,SDES+ 表示设备支持并启用了错误检测功能,而不是指示设备当前存在某个特定问题;

这是一段关于高级错误报告的信息,其中包含多个字段和值。以下是每个字段的详细解释:

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格式可能会有所不同,但通常都会包含类似的字段,用于记录错误的类型、位置和详细信息。

相关推荐
Yana.nice4 小时前
openssl将证书从p7b转换为crt格式
java·linux
AI逐月4 小时前
tmux 常用命令总结:从入门到稳定使用的一篇实战博客
linux·服务器·ssh·php
小白跃升坊4 小时前
基于1Panel的AI运维
linux·运维·人工智能·ai大模型·教学·ai agent
跃渊Yuey5 小时前
【Linux】线程同步与互斥
linux·笔记
舰长1155 小时前
linux 实现文件共享的实现方式比较
linux·服务器·网络
zmjjdank1ng5 小时前
Linux 输出重定向
linux·运维
路由侠内网穿透.5 小时前
本地部署智能家居集成解决方案 ESPHome 并实现外部访问( Linux 版本)
linux·运维·服务器·网络协议·智能家居
VekiSon5 小时前
Linux内核驱动——基础概念与开发环境搭建
linux·运维·服务器·c语言·arm开发
zl_dfq6 小时前
Linux 之 【进程信号】(signal、kill、raise、abort、alarm、Core Dump核心转储机制)
linux
Ankie Wan6 小时前
cgroup(Control Group)是 Linux 内核提供的一种机制,用来“控制、限制、隔离、统计”进程对系统资源的使用。
linux·容器·cgroup·lxc