lspci
在我的 RHEL 7.2 机器上运行时,我注意到我的以太网适配器更改了 PCI 总线 ID。在下面的示例中,它从“02:00.x”更改为“03:00.x”。
- 可能是什么原因造成的?
- 有没有办法强制它到一个特定的地址?
前:
[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)之外的所有总线都从根总线桥接,并且它们的顺序取决于枚举。
现在,通常总线枚举大多是确定性的,因为总线上设备的查找顺序通常是静态的,但不能保证这一点,并且当链接两个总线桥时,枚举是并行的:
- 开始枚举 ACPI 总线
- 在ACPI总线上找到PCIe桥1,分配总线ID 0
- 开始枚举 PCIe 总线 0
- 在ACPI总线上找到PCIe桥2,分配总线ID 1
- 在 PCIe 总线 0 上找到 PCI 桥 1,分配总线 ID 2
- 在ACPI总线上找到PCIe桥3,分配总线ID 3
两个枚举线程之间没有顺序,因此 PCI 桥可以获得 ID 1、2 或 3。
答案2
我无法发表评论,所以我想“答案”就足够了。
您升级系统了吗?现在我绝不是这方面的专家,但如果你向现有的 PCI 总线添加额外的 PCI/PCI 插槽,那么我相信这些数字有可能改变。如果我错了,我宁愿发表评论,但我相信如果我的知识有误,有人会纠正我。