Linux bridge 与device对应关系

lspci 是 Linux 系统中用于列出所有 PCI 设备信息的命令。-t-t -vlspci 命令的两种不同参数组合,它们分别提供不同级别的设备树信息和详细描述。

1. lspci -t 命令

lspci -t 命令以树状结构的方式显示所有 PCI 设备的层次关系。这种格式有助于了解设备之间的父子关系,例如哪个设备是哪个设备的从属设备。它不显示设备的详细信息,而仅显示设备的层次结构。

示例输出:

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
root@DMIT-tigyEICHBB:~# lspci -t
-[0000:00]-+-00.0
+-01.0
+-1a.0
+-1a.1
+-1a.2
+-1a.7
+-1b.0
+-1c.0-[01]--
+-1c.1-[02]--
+-1c.2-[03]--
+-1c.3-[04]--
+-1d.0
+-1d.1
+-1d.2
+-1d.7
+-1e.0-[05-09]--+-01.0-[06]--+-03.0
| | +-04.0
| | +-07.0
| | +-08.0
| | +-0a.0
| | \-12.0
| +-02.0-[07]--
| +-03.0-[08]--
| \-04.0-[09]--
+-1f.0
+-1f.2
\-1f.3

该输出显示了一个 PCI 设备树的层次结构,其中:

  • 每个节点代表一个 PCI 设备。
  • 各级节点之间的连接表示父子设备关系,例如 -[0000:00]-+-00.0 表示设备 00.0 是根设备 0000:00 的子设备。

2. lspci -t -v 命令

lspci -t -v 命令在显示设备树结构的同时,还提供了更多的详细信息,通常包括每个 PCI 设备的型号、厂商、驱动信息等。这些详细信息有助于进一步了解设备的配置和属性。

示例输出:

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
root@DMIT-tigyEICHBB:~# lspci -t -v
-[0000:00]-+-00.0 Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller
+-01.0 Device 1234:1111
+-1a.0 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #4
+-1a.1 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #5
+-1a.2 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #6
+-1a.7 Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #2
+-1b.0 Intel Corporation 82801I (ICH9 Family) HD Audio Controller
+-1c.0-[01]--
+-1c.1-[02]--
+-1c.2-[03]--
+-1c.3-[04]--
+-1d.0 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #1
+-1d.1 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #2
+-1d.2 Intel Corporation 82801I (ICH9 Family) USB UHCI Controller #3
+-1d.7 Intel Corporation 82801I (ICH9 Family) USB2 EHCI Controller #1
+-1e.0-[05-09]--+-01.0-[06]--+-03.0 Red Hat, Inc. Virtio memory balloon
| | +-04.0 Intel Corporation 6300ESB Watchdog Timer
| | +-07.0 Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
| | +-08.0 Red Hat, Inc. Virtio console
| | +-0a.0 Red Hat, Inc. Virtio block device
| | \-12.0 Red Hat, Inc. Virtio network device
| +-02.0-[07]--
| +-03.0-[08]--
| \-04.0-[09]--
+-1f.0 Intel Corporation 82801IB (ICH9) LPC Interface Controller
+-1f.2 Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
\-1f.3 Intel Corporation 82801I (ICH9 Family) SMBus Controller

该输出除了显示设备的树状结构外,还提供了每个 PCI 设备的详细信息,如:

  • 00.0 Intel Corporation 82G33/G31/P35/P31 Express DRAM Controller 表示该设备是 Intel 的 DRAM 控制器。
  • Device 1234:1111 表示该设备的 PCI 设备和供应商 ID。
  • Red Hat, Inc. Virtio memory balloon 则显示了虚拟化相关的设备信息。

lspci -t -v -s 06:03.0 这个命令在原有 lspci -t -v 的基础上,加入了 -s 选项,它会显示指定设备的信息。-s 后面跟的是设备的 PCI 地址。具体来说,06:03.0 是一个 PCI 设备的地址,表示该设备位于总线 06 上,设备编号为 03(即 06:03.0)。我们可以通过这个命令来获取该设备的详细信息。

3. lspci -t -v -s 命令

这个命令会先展示 PCI 树的层级结构,然后显示设备 的详细信息。具体扩展如下:

  1. 树形结构
    lspci -t 命令中,每个设备的层级关系是通过 PCI 总线地址来表示的。树形结构帮助我们了解设备在 PCI 总线上的层级和依赖关系。

  2. -s 选项
    -s 选项用于筛选和指定某个设备。它后面跟的是 PCI 地址(如 06:03.0),表示我们只查看这个具体设备的详细信息。

  3. 设备详细信息
    在使用 -v 选项时,输出会显示设备的详细信息,例如厂商 ID、设备 ID、设备功能、资源分配等。

举个例子,假设我们运行命令:

1
lspci -t -v -s 06:03.0

输出可能类似于:

1
2
-[0000:06]--+-03.0  Red Hat, Inc. Virtio network device
+-03.1 Intel Corporation 82801IR/IO/IH (ICH9R/DO/DH) 6 port SATA Controller [AHCI mode]
  • -[0000:06] 表示 PCI 总线 06。
  • +-03.0 设备位于总线 06 上,编号为 03,设备是 Red Hat 的 Virtio 网络设备。
  • -03.1 表示另外一个设备,也是 PCI 总线 06 上的一个设备,设备编号为 03.1。
  • lspci -t -v -s <address> 命令可以让你查看 PCI 设备树的层级结构并获取指定设备的详细信息。
  • 使用 -v 选项时,可以看到每个设备的详细属性,比如设备类型、资源分配、驱动程序等。
  • -s 选项用于指定设备地址,从而查看该设备的具体信息。