标签: lspci

  • 如何根据PCIE总线编号定位出错设备

    通过ipmitool排查机器故障原因时,往往会提示出错的PCIE总线编号,这时候我们就需要根据这串编号找出对应的出错设备

     Critical Interrupt PCIE Fatal Err | Bus Fatal Error ( PCI bus:08 device:00 function:0) | Asserted
     Critical Interrupt PCIE Fatal Err | Bus Fatal Error ( PCI bus:00 device:1c function:7) | Asserted

    在PCI或者说PCIe里,每个设备有三个编号:总线编号(Bus Number)、设备编号(Device Number)和功能编号(Function Number),那么对应上面的00:1c.7来说:这个设备的BusNumber是00,DeviceNumber是1c,FunctionNumber是7,需要说明的是这三个都是16进制表示,有些配置里需要填十进制数的,需要做下转换。

    明白了前面的编号之后,还有一个疑问,就是要怎么才能知道00:1c.7这个编号对应哪个设备。

    lspci这个工具就该出场了,用来查看当前系统连接的所有PCI/PCIe设备

    一、确定出错设备

    # lspci -nn | grep "00:1c.7"
    00:1c.7 PCI bridge [0604]: Intel Corporation C600/X79 series chipset PCI Express Root Port 8 [8086:1d1e] (rev b5)

    其中前面的[0604]表示了当前设备的DeviceClass,也就是设备类型,而后面的[8086:1d1e]代表的就是设备的VendorID和DeviceID,lspci命令会默认尝试读取/usr/share/hwdata/pci.ids.gz和/usr/share/hwdata/pci.ids文件,利用DeviceClass、VendorID:DeviceID去匹配相应的设备

    二、获取出错总线的具体信息

    # lspci -s 00:1c.7 -v                                                                                                                                                                          
    00:1c.7 PCI bridge: Intel Corporation C600/X79 series chipset PCI Express Root Port 8 (rev b5) (prog-if 00 [Normal decode])
            Flags: bus master, fast devsel, latency 0
            Bus: primary=00, secondary=08, subordinate=0c, sec-latency=0
            Memory behind bridge: de000000-df7fffff
            Prefetchable memory behind bridge: 00000000d8000000-00000000d8ffffff
            Capabilities: [40] Express Root Port (Slot-), MSI 00
            Capabilities: [80] MSI: Enable+ Count=1/1 Maskable- 64bit-
            Capabilities: [90] Subsystem: Dell Device 04ce
            Capabilities: [a0] Power Management version 2
            Capabilities: [100] Advanced Error Reporting
            Kernel driver in use: pcieport
            Kernel modules: shpchp

    三、跟踪端口

     \-[0000:00]-+-00.0
                 +-01.0-[02]--+-00.0
                 |            \-00.1
                 +-01.1-[01]--+-00.0
                 |            \-00.1
                 +-02.0-[04]--
                 +-02.2-[03]----00.0
                 +-03.0-[05]--
                 +-05.0
                 +-05.2
                 +-11.0-[06]--
                 +-16.0
                 +-16.1
                 +-1a.0
                 +-1c.0-[07]--
                 +-1c.7-[08-0c]----00.0-[09-0c]--+-00.0-[0a-0b]----00.0-[0b]----00.0
                 |                               \-01.0-[0c]--
    

    四、输出机器可读信息

    可以得到设备厂商,设备驱动

    # lspci -vmm | grep -C 6 00:1c.7
    Slot:   00:1c.7
    Class:  PCI bridge
    Vendor: Intel Corporation
    Device: C600/X79 series chipset PCI Express Root Port 8
    Rev:    b5