是什么导致 PCI ID 改变

是什么导致 PCI ID 改变

lspci在我的 RHEL 7.2 机器上运行时,我注意到我的以太网适配器更改了 PCI 总线 ID。在下面的示例中,它从“02:00.x”更改为“03:00.x”。

  1. 可能是什么原因造成的?
  2. 有没有办法强制它到一个特定的地址?

前:

[root@rhel:~]# lspci | grep Ethernet
02:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
02:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

当前的:

[root@rhel:~]# lspci | grep Ethernet
03:00.0 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)
03:00.1 Ethernet controller: Intel Corporation I350 Gigabit Network Connection (rev 01)

答案1

除了根总线(通常是平台总线,例如 PC 上的 ACPI)之外的所有总线都从根总线桥接,并且它们的顺序取决于枚举。

现在,通常总线枚举大多是确定性的,因为总线上设备的查找顺序通常是静态的,但不能保证这一点,并且当链接两个总线桥时,枚举是并行的:

  1. 开始枚举 ACPI 总线
  2. 在ACPI总线上找到PCIe桥1,分配总线ID 0
  3. 开始枚举 PCIe 总线 0
  4. 在ACPI总线上找到PCIe桥2,分配总线ID 1
  5. 在 PCIe 总线 0 上找到 PCI 桥 1,分配总线 ID 2
  6. 在ACPI总线上找到PCIe桥3,分配总线ID 3

两个枚举线程之间没有顺序,因此 PCI 桥可以获得 ID 1、2 或 3。

答案2

我无法发表评论,所以我想“答案”就足够了。

您升级系统了吗?现在我绝不是这方面的专家,但如果你向现有的 PCI 总线添加额外的 PCI/PCI 插槽,那么我相信这些数字有可能改变。如果我错了,我宁愿发表评论,但我相信如果我的知识有误,有人会纠正我。

相关内容