7

Я рассматриваю ситуацию, когда в шасси PCI/PCIe подключено несколько одинаковых (National Instruments) модулей PCIe DAQ, подключенных через контроллер с одним или двумя шасси. В худшем случае на шине может быть 8 одинаковых модулей.

Я был убежден, что перечисление PCI недетерминировано - то есть, что нет никакой гарантии, что при загрузке для загрузки шина PCI будет перечисляться в том же порядке. Это правда?

Означает ли это также, что значения шины PCI / e / устройства / функции могут изменяться, загружаться в загрузку, даже если физическая раскладка оборудования не меняется?

Короче говоря, я понимаю, что начальное перечисление PCI выполняется BIOS, и что загрузочная ОС (в моем случае RHEL 6) использует этот список для обслуживания идентифицированного оборудования. Всегда ли этот список содержит найденные устройства в том же порядке или нет?

Это подсказка в Red Hat Bugzilla, которая подразумевает, что порядок BIOS всегда одинаков.

Обратите внимание, что я (пока) не говорю о порядке, в котором ОС обрабатывает устройства (например, в Linux, определяя порядок /dev / name).

Спасибо!

1 ответ1

5

Краткий ответ - "Да", если BIOS (который выполняет начальное перечисление) соответствует спецификации PCI.

По данным: "Архитектура системы PCI Express" Р. Будрук, Д. Андерсон, Т. Шенли, ПРЕССА РАЗРАБОТЧИКА ADDISON-WESLEY, 2003. ISBN: 0-321-15630-7, стр. 743:

В спецификации говорится, что программное обеспечение для перечисления должно выполнять поиск в глубину, поэтому, прежде чем приступить к обнаружению дополнительных функций / устройств на шине 0, оно должно перейти к поисковой шине 1.

И для RHEL 6:

9. Устройства и драйверы устройств

Заказ устройства PCI

В Red Hat Enterprise Linux 6 порядок расположения устройств PCI основан на перечислении устройств PCI. Перечисление устройств PCI основано на алгоритме перечисления PCI (сначала глубина, затем ширина) и является постоянной для каждого типа системы. Кроме того, как только устройства обнаружены, процесс загрузки модуля секвенируется, обеспечивая постоянное именование интерфейсов.

Тем не менее, (некоторые версии?) Linux поддерживает параметр ядра «pci = bfsort», который изменяет алгоритм перечисления Linux на "сначала ширину". Это изменит порядок загрузки ядра Linux и инициализации устройств PCI по сравнению с BIOS.

В любом случае, при загрузке перечисленные списки будут по-прежнему содержать обнаруженные элементы в том же порядке.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .