lspci
命令详解
lspci
是 Linux 系统中用于列出所有 PCI/PCIe 设备 的工具,能够显示设备类型、厂商、驱动、内存映射等关键信息,是硬件排查和系统管理的必备命令。
1. 基本用法
(1) 列出所有PCI设备
lspci
输出示例:
00:00.0 Host bridge: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 DMI2 (rev 02)
00:01.0 PCI bridge: Intel Corporation Xeon E7 v3/Xeon E5 v3/Core i7 PCI Express Root Port 1 (rev 02)
02:00.0 Fibre Channel: QLogic Corp. QLE2692 FlexLOM 16G FC HBA (rev 02)
03:00.0 Ethernet controller: Intel Corporation Ethernet 10G 2P X520 Adapter (rev 01)
- 格式:
[PCI总线号:设备号.功能号] [设备类别]: [厂商] [设备型号] (rev [版本号])
02:00.0
:PCI 设备地址(总线:设备.功能
)。Fibre Channel
:设备类型(这里是光纤通道HBA卡)。QLogic Corp. QLE2692
:厂商和型号。
(2) 显示详细信息(-v
/ -vv
/ -vvv
)
lspci -v # 基本详细信息
lspci -vv # 更详细(包括PCI配置空间)
lspci -vvv # 最详细(调试用)
关键字段:
Kernel driver in use
:当前使用的内核驱动(如qla2xxx
、lpfc
)。Memory at
:设备的内存映射地址(用于调试DMA问题)。Capabilities
:设备支持的PCI功能(如MSI-X中断、电源管理)。
示例输出:
02:00.0 Fibre Channel: QLogic Corp. QLE2692 FlexLOM 16G FC HBA (rev 02)
Subsystem: QLogic Corp. Device 0123
Flags: bus master, fast devsel, latency 0, IRQ 100
Memory at fbe80000 (64-bit, non-prefetchable) [size=256K]
Capabilities: [80] Power Management version 3
Kernel driver in use: qla2xxx
Kernel modules: qla2xxx
(3) 按设备类/厂商过滤
lspci -d [厂商ID:设备ID] # 按PCI ID过滤
lspci -s [总线:设备.功能] # 按PCI地址过滤
示例:
lspci -d 1077: # 查看QLogic(厂商ID 1077)的所有设备
lspci -s 02:00.0 # 查看总线02、设备00、功能0的设备
(4) 以树形结构显示(-t
)
lspci -t
输出示例:
-+-[0000:00]-+-00.0
| +-01.0-[02]----00.0 # PCIe设备层级关系
| \-02.0-[03]----00.0
- 可以直观看出 PCIe拓扑结构(如哪个设备挂在哪个总线下)。
(5) 显示设备内核驱动(-k
)
lspci -k
输出示例:
02:00.0 Fibre Channel: QLogic Corp. QLE2692 FlexLOM 16G FC HBA (rev 02)
Subsystem: QLogic Corp. Device 0123
Kernel driver in use: qla2xxx
Kernel modules: qla2xxx
Kernel driver in use
:当前加载的驱动。Kernel modules
:设备可用的驱动模块。
2. 高级用法
(1) 显示PCI设备的I/O和内存映射(-xxxx
)
lspci -xxxx -s 02:00.0 # 查看设备的完整配置空间(十六进制)
- 适用于 驱动开发 或 硬件调试(如检查PCI寄存器)。
(2) 导出为机器可读格式(-mm
/ -n
)
lspci -mm # 输出为键值对(适合脚本解析)
lspci -n # 显示PCI ID(数字形式,而非名称)
示例:
lspci -n -d 1077: # 查看QLogic设备的PCI ID
输出:
02:00.0 0c04: 1077:2261 (rev 02)
0c04
:设备类(Fibre Channel)。1077:2261
:厂商ID:设备ID。
(3) 结合grep
过滤特定设备
lspci | grep -i "fibre\|hba" # 查找HBA卡
lspci | grep -i "nvidia" # 查找NVIDIA显卡
lspci | grep -i "ethernet" # 查找网卡
3. 常见问题排查
(1) 设备未识别?
- 检查驱动是否加载:
lsmod | grep qla2xxx # 如果是QLogic FC HBA
- 检查内核是否支持该设备:
lspci -nn -d [厂商ID:设备ID] # 确认PCI ID是否匹配驱动
(2) 设备显示但无驱动?
- 手动加载驱动:
modprobe qla2xxx # 加载QLogic驱动
(3) PCI设备冲突?
- 查看IRQ和内存分配:
lspci -vv -s 02:00.0 | grep -i "irq\|memory"
4. 总结
选项 | 用途 | 示例 |
---|---|---|
lspci |
列出所有PCI设备 | lspci | grep -i "hba" |
lspci -v |
显示详细信息(驱动、内存、IRQ) | lspci -v -s 02:00.0 |
lspci -k |
显示内核驱动信息 | lspci -k | grep -i "driver" |
lspci -t |
树形显示PCI拓扑 | lspci -t |
lspci -d |
按厂商ID过滤设备 | lspci -d 1077: (QLogic设备) |
lspci -xxxx |
查看PCI配置空间(调试用) | lspci -xxxx -s 02:00.0 |
典型应用场景:
- 排查HBA卡是否被识别:
lspci | grep -i "fibre\|hba"
- 查看设备驱动:
lspci -k -s 02:00.0
- 调试PCI设备冲突:
lspci -vv -s 02:00.0