指令 lspci 可以看到很多關於 PCI-E 裝置的訊息,但這些訊息個代表什麼意思!!
測試環境為 CentOS7 x86_64
我的系統裡面有一張 Intel Corporation 82545EM Gigabit 網卡.
[root@localhost ~]$ lspci 01:00.0 Ethernet controller: Intel Corporation 82575EB Gigabit Network Connection (rev 02)
PCI 的裝置使用三個編號用來當作識別值,個別為 1.匯流排(bus number), 2. 裝置(device number) 以及 3. 功能(function number).
- 透過 #lspci 查詢 PCI-E Bus 匯流排速度,請參考 https://benjr.tw/10842
- 關於 lspci 參數使用,請參考 https://benjr.tw/10851
透過參數 -s(specified 只看特定裝置) -vvv(Verbose 可以顯示更多訊息,還有 -v , -vv),可以看到整個 PCI-E 裝置的詳細設定與狀態,下面來看各所代表的意思.
[root@localhost ~]$ lspci -s 01:00.0 -vvv
- 卡的基本訊息
其中的 + – 代表有沒有被啟動或是發生.01:00.0 Ethernet controller: Intel Corporation 82575EB Gigabit Network Connection (rev 02)
Control: I/O+ Mem+ BusMaster+ SpecCycle- MemWINV- VGASnoop- ParErr- Stepping- SERR- FastB2B- DisINTx+ Status: Cap+ 66MHz- UDF- FastB2B- ParErr- DEVSEL=fast >TAbort- <TAbort- <MAbort- >SERR- <PERR- INTx- Latency: 0, Cache Line Size: 64 bytes Interrupt: pin A routed to IRQ 16 Region 0: Memory at fbba0000 (32-bit, non-prefetchable) [size=128K] Region 1: Memory at fbb80000 (32-bit, non-prefetchable) [size=128K] Region 2: I/O ports at e020 [size=32] Region 3: Memory at fbbc4000 (32-bit, non-prefetchable) [size=16K] Expansion ROM at fbb60000 [disabled] [size=128K]
- Power Management
與 PCI-E 裝置相關的電源管理.Capabilities: [40] Power Management version 2 Flags: PMEClk- DSI+ D1- D2- AuxCurrent=0mA PME(D0+,D1-,D2-,D3hot+,D3cold+) Status: D0 NoSoftRst- PME-Enable- DSel=0 DScale=1 PME-
主要可以看一下 PME(D0+,D1-,D2-,D3hot+,D3cold+) power management event 的狀態,+ 代表有被啟動, – 代表沒有被啟動.
D0 有 Uninitialized 與 Active 兩種狀態.
D1 為 Light Sleep 狀態.
D2 為 Deep Sleep 狀態.
D3 為 Full Off 狀態, 還可以分成為 D3cold 與 D3hot 兩種狀態. - Message Signaled Interrupts
有分兩種 MSI 與 MSI-X .Capabilities: [50] MSI: Enable- Count=1/1 Maskable- 64bit+ Address: 0000000000000000 Data: 0000 Capabilities: [60] MSI-X: Enable+ Count=10 Masked- Vector table: BAR=3 offset=00000000 PBA: BAR=3 offset=00002000
MSI 是 PCI Express 中斷產生的方式,採用 in-band (控制訊號與資料同線路) 的方式,取代舊有的 out-of-band 的方式.
MSI (PCI 2.2 開始採用) 支援 1, 2, 4, 8, 16 或 32 中斷上限.
MSI-X (PCI 3.0 開始採用) 支援 2048 中斷上限. - Express Endpoint
Capabilities: [a0] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s <512ns, L1 <64us ExtTag- AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 0.000W DevCtl: Report errors: Correctable+ Non-Fatal+ Fatal+ Unsupported+ RlxdOrd- ExtTag- PhantFunc- AuxPwr- NoSnoop- MaxPayload 256 bytes, MaxReadReq 128 bytes DevSta: CorrErr+ UncorrErr- FatalErr- UnsuppReq+ AuxPwr+ TransPend- LnkCap: Port #0, Speed 2.5GT/s, Width x4, ASPM L0s L1, Exit Latency L0s <4us, L1 <64us ClockPM- Surprise- LLActRep- BwNot- ASPMOptComp- LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk+ ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 2.5GT/s, Width x4, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range ABCD, TimeoutDis+, LTR-, OBFF Not Supported DevCtl2: Completion Timeout: 16ms to 55ms, TimeoutDis-, LTR-, OBFF Disabled LnkCtl2: Target Link Speed: 2.5GT/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-
DevCap: Device Capabilities
其中的 MaxPayload 代表 PCIe 封包最大有效負載量,類似網路設定的 MTU.
DevCtl: Device Control
Report errors 表示哪一些錯誤需要被報告 + 代表有需要, – 代表沒有需要.詳細還需要看下面的 Advanced Error Reporting.
其中的 MaxReadReq (PCIe Max Read Request) 代表 PCIe 讀取請求允許的上限值.
DevSta: Device State
目前裝置狀態,有沒有錯誤發生.LnkCap: Link capability
系統能提供的最高頻寬 PCI-Express 1.0 ( 2.5G ) Width x4=10G .
LnkCtl: Link Control
裡面的 ASPM 為 PCI Express Active State Power Management ,disabled 代表沒有使用 power savings.
LnkSta: Link State
目前該PCI-E 裝置跑的速度 PCI-Express 1.0 ( 2.5G ) Width x1=2.5G,DevCap2: 其他與 Device Capabilities 相關的訊息.
DevCtl2: 其他與 Device Control 相關的訊息.
LnkCtl2: 其他與 Link Control 相關的訊息.
LnkSta2: 其他與 Link State 相關的訊息.
後面的 Register 就需要到 PCI-SIG 查詢 PCI-E Specification – https://pcisig.com/specifications - Advanced Error Reporting
PCI Express 錯誤信號可能發生在 PCI Express 鏈路本身或在鏈路上啟動時.
PCI Express 定義兩個錯誤報告: 1. 基本(baseline) 和 2.高級(Advanced) 錯誤報告 (Error Reporting) 功能.Capabilities: [100 v1] 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-
UESta: UN-correctable Error State
UEMsk: UN-correctable Error Mask
UESvrt: UN-correctable Error ?
CESta: Correctable Error State
CEMsk: Correctable Error Mask
AERCap: AER Capabilities - 其他訊息
Capabilities: [140 v1] Device Serial Number 90-fb-a6-ff-ff-76-38-00 Kernel driver in use: igb Kernel modules: igb