在FreeBSD10中找到设备主机桥的pci

时间:2016-03-13 09:24:54

标签: freebsd pci

我有一个设备的pci地址,需要找到它的主机桥的pci地址。在FreeBSD 11中,使用" devinfo -v"很容易做到这一点。因为您可以grep设备的pci地址,然后您可以在作为主桥的树中找到它的父级。现在在FreeBSD 10中," devinfo -v"的输出中没有任何pci地址。 " devinfo -v"的示例FreeBSD 11中的输出:

pcib4 pnpinfo vendor=0x8086 device=0x2f08 subvendor=0x15d9 subdevice=0x0833 class=0x060400 at pci0:0:3:0 handle=\_SB_.PCI0.BR3A
      pci4
        mlx5_core1 pnpinfo vendor=0x15b3 device=0x1013 subvendor=0x15b3 subdevice=0x0010 class=0x020700 at pci0:3:0:0 handle=\_SB_.PCI0.BR3A.H000
        mlx5_core2 pnpinfo vendor=0x15b3 device=0x1013 subvendor=0x15b3 subdevice=0x0010 class=0x020700 at pci0:3:0:1 handle=\_SB_.PCI0.BR3A.H001

" devinfo -v" FreeBSD 10中的输出:

pcib4 pnpinfo vendor=0x8086 device=0x2f08 subvendor=0x15d9 subdevice=0x0833 class=0x060400
      pci4
        mlx5_core1 pnpinfo vendor=0x15b3 device=0x1013 subvendor=0x15b3 subdevice=0x0010 class=0x020700
        mlx5_core2 pnpinfo vendor=0x15b3 device=0x1013 subvendor=0x15b3 subdevice=0x0010 class=0x020700

所以你可以看到pci地址没有出现在FreeBSD10的输出中

3 个答案:

答案 0 :(得分:0)

有两步解决方法。首先找到设备名称:

pciconf -l -v | grep "pci0:2:0:0" | cut -f 1 -d @

就我而言,它是sdhci_pci0。

然后在devinfo中找到位置:

$ devinfo | grep -B 5 sdhci_pci0
              pcm2
              pcm3
              pcm4
        pcib1
          pci2
            sdhci_pci0

注意: 在FreeBSD10.2-STABLE上,我可以在devinfo的输出中看到PCI信息。

答案 1 :(得分:0)

另一种可能性是遍历dev sysctl树:

  1. 您可以在%location OID中找到您的PCI地址:

    $ sysctl dev | grep %location
    dev.hdac.1.%location: pci0:0:27:0 handle=\_SB_.PCI0.HDEF
    dev.hdac.0.%location: pci0:2:0:1
    dev.vgapci.0.%location: pci0:2:0:0 handle=\_SB_.PCI0.PEG3.MXM3
    dev.hostb.15.%location: pci0:255:5:3
    dev.hostb.14.%location: pci0:255:5:2
    
  2. 然后,您可以使用%父OID查找父级。例如,pci0:2:0:0的父级(在上面的示例中列出)是pci1

    $ sysctl dev.vgapci.0.%parent
    dev.vgapci.0.%parent: pci1
    
  3. 父级有自己的sysctl树:

    $ sysctl dev.pcib.1.%location
    dev.pcib.1.%location: pci0:0:3:0 handle=\_SB_.PCI0.PEG3
    
  4. 不是最简单的方法,但它应该适用于不同版本的FreeBSD(可能还有DragonFlyBSD FWIW)。

答案 2 :(得分:0)

尝试devinfo -rv

FreeBSD 10.3上的输出片段:

        atapci1 pnpinfo vendor=0x8086 device=0x27c0 subvendor=0x1043 subdevice=0x8179 class=0x01018f at p
ci0:0:31:2 handle=\_SB_.PCI0.IDE1
            Interrupt request lines:
                0x13
            I/O ports:
                0xb880-0xb88f
                0xbc00-0xbc03
                0xc000-0xc007
                0xc080-0xc083
                0xc400-0xc407
          ata2 at channel=0
          ata3 at channel=1