lspci查看PCI设备详细信息

目录

      • [**`lspci` 命令详解**](#lspci 命令详解)
    • [**1. 基本用法**](#1. 基本用法)
      • [**(1) 列出所有PCI设备**](#(1) 列出所有PCI设备)
      • [**(2) 显示详细信息(`-v` / `-vv` / `-vvv`)**](#(2) 显示详细信息(-v / -vv / -vvv)
      • [**(3) 按设备类/厂商过滤**](#(3) 按设备类/厂商过滤)
      • [**(4) 以树形结构显示(`-t`)**](#(4) 以树形结构显示(-t)
      • [**(5) 显示设备内核驱动(`-k`)**](#(5) 显示设备内核驱动(-k)
    • [**2. 高级用法**](#2. 高级用法)
      • [**(1) 显示PCI设备的I/O和内存映射(`-xxxx`)**](#(1) 显示PCI设备的I/O和内存映射(-xxxx)
      • [**(2) 导出为机器可读格式(`-mm` / `-n`)**](#(2) 导出为机器可读格式(-mm / -n)
      • [**(3) 结合`grep`过滤特定设备**](#(3) 结合grep过滤特定设备)
    • [**3. 常见问题排查**](#3. 常见问题排查)
      • [**(1) 设备未识别?**](#(1) 设备未识别?)
      • [**(2) 设备显示但无驱动?**](#(2) 设备显示但无驱动?)
      • [**(3) PCI设备冲突?**](#(3) PCI设备冲突?)
    • [**4. 总结**](#4. 总结)

lspci 命令详解

lspci 是 Linux 系统中用于列出所有 PCI/PCIe 设备 的工具,能够显示设备类型、厂商、驱动、内存映射等关键信息,是硬件排查和系统管理的必备命令。


1. 基本用法

(1) 列出所有PCI设备

bash 复制代码
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

bash 复制代码
lspci -v      # 基本详细信息
lspci -vv     # 更详细(包括PCI配置空间)
lspci -vvv    # 最详细(调试用)

关键字段

  • Kernel driver in use :当前使用的内核驱动(如 qla2xxxlpfc)。
  • 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) 按设备类/厂商过滤

bash 复制代码
lspci -d [厂商ID:设备ID]   # 按PCI ID过滤
lspci -s [总线:设备.功能]  # 按PCI地址过滤

示例

bash 复制代码
lspci -d 1077:   # 查看QLogic(厂商ID 1077)的所有设备
lspci -s 02:00.0 # 查看总线02、设备00、功能0的设备

(4) 以树形结构显示(-t

bash 复制代码
lspci -t

输出示例

复制代码
-+-[0000:00]-+-00.0
 |           +-01.0-[02]----00.0  # PCIe设备层级关系
 |           \-02.0-[03]----00.0
  • 可以直观看出 PCIe拓扑结构(如哪个设备挂在哪个总线下)。

(5) 显示设备内核驱动(-k

bash 复制代码
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

bash 复制代码
lspci -xxxx -s 02:00.0  # 查看设备的完整配置空间(十六进制)
  • 适用于 驱动开发硬件调试(如检查PCI寄存器)。

(2) 导出为机器可读格式(-mm / -n

bash 复制代码
lspci -mm    # 输出为键值对(适合脚本解析)
lspci -n     # 显示PCI ID(数字形式,而非名称)

示例

bash 复制代码
lspci -n -d 1077:  # 查看QLogic设备的PCI ID

输出:

复制代码
02:00.0 0c04: 1077:2261 (rev 02)
  • 0c04:设备类(Fibre Channel)。
  • 1077:2261:厂商ID:设备ID。

(3) 结合grep过滤特定设备

bash 复制代码
lspci | grep -i "fibre\|hba"  # 查找HBA卡
lspci | grep -i "nvidia"      # 查找NVIDIA显卡
lspci | grep -i "ethernet"    # 查找网卡

3. 常见问题排查

(1) 设备未识别?

  • 检查驱动是否加载:

    bash 复制代码
    lsmod | grep qla2xxx  # 如果是QLogic FC HBA
  • 检查内核是否支持该设备:

    bash 复制代码
    lspci -nn -d [厂商ID:设备ID]  # 确认PCI ID是否匹配驱动

(2) 设备显示但无驱动?

  • 手动加载驱动:

    bash 复制代码
    modprobe qla2xxx  # 加载QLogic驱动

(3) PCI设备冲突?

  • 查看IRQ和内存分配:

    bash 复制代码
    lspci -vv -s 02:00.0 | grep -i "irq\|memory"

4. 总结

选项 用途 示例
lspci 列出所有PCI设备 `lspci
lspci -v 显示详细信息(驱动、内存、IRQ) lspci -v -s 02:00.0
lspci -k 显示内核驱动信息 `lspci -k
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