Что вызывает изменение идентификатора PCI

При запуске lspci на моем поле RHEL 7.2 я заметил, что мои Ethernet-адаптеры изменили идентификаторы шины PCI. В приведенном ниже примере он изменился с «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) 

Все, кроме корневой шины (которая обычно является шиной платформы, например ACPI на ПК), перекрываются с корневой шиной, и их порядок зависит от перечисления.

Теперь обычно перечисление шин в основном детерминировано как порядок, в котором обнаружены устройства на шине, как правило, статично, но для этого нет никакой гарантии, и когда два моста шины соединены цепью, подсчет параллелен:

  1. начать перечисление шины ACPI
  2. найти мост PCIe 1 на шине ACPI, назначить идентификатор шины 0
  3. начать перечисление шины PCIe 0
  4. найти PCIe мост 2 на шине ACPI, назначить идентификатор шины 1
  5. найти PCI-мост 1 на шине PCIe 0, назначить идентификатор шины 2
  6. найти PCIe мост 3 на шине ACPI, назначить идентификатор шины 3

Между двумя потоками перечислений нет порядка, поэтому мост PCI может получить идентификатор 1, 2 или 3.

Я не могу комментировать, поэтому я думаю, что «Ответ» будет достаточно.

Вы вообще обновили свою систему? Теперь я никоим образом не специалист в этом, но если вы добавите дополнительные PCI / PCI слоты в существующую шину PCI, тогда есть «возможность», что числа могут меняться, я считаю. Я бы скорее сделал этот комментарий на случай, если я ошибаюсь, но я уверен, что кто-то исправит меня, если мои знания исчезнут.