参考:
- Interpreting the output of lspci
- 深入PCI与PCIe之一:硬件篇
- 深入PCI与PCIe之二:软件篇
- lspci 详解pci拓扑结构与pci树形结构
lspci命令使用和解析
lspci在linux系统中查看PCI总线上连接设备信息的工具。一些常用的参数
- –v:显示详细信息
- –s:指定设备的PCI地址
- –n:显示设备的PCI ID
- –vv:显示更加详细的信息
常见的应用场景:
- 检测PCI设备是否正常工作:lspci命令能列出相关设备信息说明设备已经被识别
- 查看硬件配置信息:识别计算机的配置信息来正确的安装和配置相关设备的驱动程序
- 查找特定类型的设备:可查找特定类型的设备,列入-l参数列出网络相关的设备
其他同类型的工具:lshw,hwinfo,lspcmcia
1 2 3 4 5 6 7
| lspci 02:00.0 Network controller: Intel Corporation Wireless 7265 (rev 59)
lspci -D 0002:e8:00.0 PCI bridge: ----- Co., Ltd. Device 1610 (rev 01) 0004:48:00.0 PCI bridge: ----- Co., Ltd. Device 1610 (rev 01) 0004:49:00.0 Serial Attached SCSI controller: LSI Logic / Symbios Logic SAS3008 PCI-Express Fusion-MPT SAS-3 (rev 02)
|
Bus地址:[00:1c.0] 00表示总线编号(Bus Number),1c表示设备编号(Device Number),0表示功能编号(Function Number),三个编号都是采用16进制表示
理论上,一个Segment可以有256个Bus,每个Bus可以有32个Device,每个Device可以有8个Function;设备特别多的情况下会存在多个DomainNumber,或者使用lspci -D命令输出会带上DomainNumber
1 2
| lspci -nn 00:19.0 Ethernet controller [0200]: Intel Corporation Ethernet Connection (3) I218-LM [8086:15a2] (rev 03)
|
[0200]表示当前设备类型DeviceClass,[8086:15a2]表示设备的VendorID和Device
lspci命令会默认尝试读取/usr/share/hwdata/pci.ids.gz和/usr/share/hwdata/pci.ids文件,利用DeviceClass、VendorID:DeviceID去匹配相应的设备,这个设备清单是由https://pci-ids.ucw.cz/维护的,我们也可以直接去网站上去查询。
1 2 3 4 5 6 7 8
| lspci -vt +-[0000:62]-+-00.0 Intel Corporation Device 09a2 | +-00.1 Intel Corporation Device 09a4 | +-00.2 Intel Corporation Device 09a3 | +-00.4 Intel Corporation Device 0998 | \-02.0-[63-75]----00.0-[64-75]--+-00.0-[65-6a]----00.0-[66-6a]----10.0-[67-6a]----00.0-[68-6a]--+-00.0-[69]----00.0 NVIDIA Corporation Device 20f3 | | \-1f.0-[6a]----00.0 LSI Logic / Symbios Logic Device 00b2 | +-04.0-[6b-70]----00.0-[6c-70]--+-00.0-[6d-6f]----00.0-[6e-6f]----00.0-[6f]----00.0 NVIDIA Corporation Device 20f3
|
-v参数会显示设备的供应商和名字,虽然Domain Number都是0000但是设备不一定连接到同一条总线上
参考图片:

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59
| lspci -vvv c0:00.0 Bridge: NVIDIA Corporation Device 1af1 (rev a1) Subsystem: NVIDIA Corporation Device 13b8 Physical Slot: 1 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: 32 bytes Interrupt: pin A routed to IRQ 984 NUMA node: 1 Region 0: Memory at e2000000 (32-bit, non-prefetchable) [size=32M] Capabilities: [60] 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: [68] MSI: Enable+ Count=1/1 Maskable- 64bit+ Address: 00000000fee01a98 Data: 0000 Capabilities: [78] Express (v2) Endpoint, MSI 00 DevCap: MaxPayload 256 bytes, PhantFunc 0, Latency L0s unlimited, L1 <64us ExtTag+ AttnBtn- AttnInd- PwrInd- RBE+ FLReset- SlotPowerLimit 25.000W DevCtl: Report errors: Correctable- Non-Fatal+ Fatal+ Unsupported- RlxdOrd+ ExtTag+ PhantFunc- AuxPwr- NoSnoop+ MaxPayload 256 bytes, MaxReadReq 4096 bytes DevSta: CorrErr- UncorrErr- FatalErr- UnsuppReq- AuxPwr- TransPend- LnkCap: Port #0, Speed 8GT/s, Width x2, ASPM not supported, Exit Latency L0s unlimited, L1 <4us ClockPM+ Surprise- LLActRep- BwNot- ASPMOptComp+ LnkCtl: ASPM Disabled; RCB 64 bytes Disabled- CommClk- ExtSynch- ClockPM- AutWidDis- BWInt- AutBWInt- LnkSta: Speed 8GT/s, Width x2, TrErr- Train- SlotClk+ DLActive- BWMgmt- ABWMgmt- DevCap2: Completion Timeout: Range AB, TimeoutDis+, LTR+, OBFF Via message 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: [100 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: [250 v1] Latency Tolerance Reporting Max snoop latency: 0ns Max no snoop latency: 0ns Capabilities: [128 v1] Power Budgeting <?> Capabilities: [420 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: [600 v1] Vendor Specific Information: ID=0001 Rev=1 Len=024 <?> Capabilities: [900 v1] #19 Capabilities: [bb0 v1] #15 Kernel driver in use: nvidia-nvswitch Kernel modules: nvidia_drm, nvidia
|
1
| lspci -xxx展示pci设备的配置空间,十六进制输出
|