LINUX.ORG.RU

Порядок USB контроллеров может смениться при перезагрузке

 , , ,


0

2

На материнской плате есть два идентичных USB-контроллера (Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller). При перезагрузке, не известно какой из них будет первым, а какой вторым. Это важно, компьютер используется как хост для виртуалок, куда пробрасываются USB-ключи. Так как есть одинаковые ключи - проброс делается через номер порта. Проброс USB в proxmox - то еще приключение, но сейчас интересует, можно ли как-то зафиксировать порядок контроллеров. На сколько я знаю, PCI-устройства работают через plug-and-play, т.е. кто первый встал - того и тапки. Может кто сталкивался с такой проблемой?

Вот вывод lspci:

00:00.0 Host bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor DRAM Controller (rev 09)
00:01.0 PCI bridge: Intel Corporation Xeon E3-1200 v2/3rd Gen Core processor PCI Express Root Port (rev 09)
00:02.0 VGA compatible controller: Intel Corporation IvyBridge GT2 [HD Graphics 4000] (rev 09)
00:14.0 USB controller: Intel Corporation 7 Series/C210 Series Chipset Family USB xHCI Host Controller (rev 04)
00:16.0 Communication controller: Intel Corporation 7 Series/C216 Chipset Family MEI Controller #1 (rev 04)
00:16.3 Serial controller: Intel Corporation 7 Series/C210 Series Chipset Family KT Controller (rev 04)
00:19.0 Ethernet controller: Intel Corporation 82579LM Gigabit Network Connection (Lewisville) (rev 04)
00:1a.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #2 (rev 04)
00:1b.0 Audio device: Intel Corporation 7 Series/C216 Chipset Family High Definition Audio Controller (rev 04)
00:1d.0 USB controller: Intel Corporation 7 Series/C216 Chipset Family USB Enhanced Host Controller #1 (rev 04)
00:1e.0 PCI bridge: Intel Corporation 82801 PCI Bridge (rev a4)
00:1f.0 ISA bridge: Intel Corporation Q77 Express Chipset LPC Controller (rev 04)
00:1f.2 SATA controller: Intel Corporation 7 Series/C210 Series Chipset Family 6-port SATA Controller [AHCI mode] (rev 04)
00:1f.3 SMBus: Intel Corporation 7 Series/C216 Chipset Family SMBus Controller (rev 04)
Ответ на: комментарий от anonymous

А, извините, пропустил пункт про одинаковые ключи. Не уверен, что это можно сделать.

anonymous
()

вариант бэ: выключить параллельную работу перечислителя железяк в udev (видел такую статейку в тырнетике).
гонки параллельных процессов не будет - номера будут выставляться только в линейном порядке.
минус - загрузка медленнеее..

pfg ★★★★★
()
Последнее исправление: pfg (всего исправлений: 1)

Там есть третий USB-контроллер xHCI - т.е. USB 3.0. Он, вроде, всегда после тех двух инициализируется. Думаю повесить на него хаб, как вариант.

Rupricht ★★
() автор топика

А разве путь pcie устройства не остаётся неизменным при перезагрузке? Речь о вот этих 00:1a.0 в выводе lspci. Опираясь на них можно написать udev правила

cobold ★★★★★
()
Ответ на: комментарий от Radjah

Это именно HASP и именно этот сервер их раздает по сети, вернее будет раздавать. Там 1С, Компас, и др САПР.

Rupricht ★★
() автор топика

Пробрасывай через USB/IP.

anonymous
()

a в lspci -vv их различить нельзя? например, по Interrupt? это не всегда возможно, иногда устройства юзают одно прерывание. но всё-таки проверить стоит.

там могут на самом деле быть и два порта одного и того же девайса. на PCI такое возможно. один чип может иметь два устройства. и именно USB хабы часто бывают двухпортовые. правда, на ноутбуках часто физически разведён только один порт из двух.

Iron_Bug ★★★★★
()
Последнее исправление: Iron_Bug (всего исправлений: 2)
Ответ на: комментарий от Radjah

Мне показалось, что QEMU это не умеет, но я только погуглил, документацию не открывал.

anonymous
()
Ответ на: комментарий от cobold

Если не добавлять/удалять устройства и не теребить настройки BIOS :) Но на серверном железе, наверное, с предсказуемостью топологии получше, чем в десктопном.

anonymous
()
Ответ на: комментарий от anonymous

На серверном железе и не было проблем, но там посыпались диски без возможности их замены. Это же десктопная материнка.

Rupricht ★★
() автор топика
Ответ на: комментарий от anonymous

а при чём тут серверы? есть несколько PNP протоколов (для разных шин), но арбитр шины просто нумерует девайсы в зависимости от порядка прихода запросов от них при старте. это не зависит от целей использования железа и реализовано одинаково для всех.

вообще, PCI имеет древовидную структуру. для бриджей есть secondary address, который будет базовым для всех дочерних шин/устройств. дочерних узлов может быть вплоть до количества, указанного в subordinate. и внутри одной шины адресация тоже может быть PNP. и так далее, вглубь всего дерева по подключениям. lspci -tv показывает дерево PCI и можно указывать девайс (через -s [address]).

вот, иногда по прерываниям можно их различить. но это если это физически два девайса и они не используют какой-нибудь MSI или расшаривание прерываний, когда на одном прерывании сидят несколько девайсов, если это внешний APIC. в современных процах APIC виртуальный, поэтому расшаривания там нет, но и физических номеров линий IRQ тоже.

я подозреваю, что в данном случае это два порта одного чипа. просто на материнке места много и развели оба. например, у меня на ноутбуке у чипа тоже тоже два порта, но физически есть только один USB хаб, второй просто не подключен.

Iron_Bug ★★★★★
()

PCI слоты же не прыгают, привяжись к ним. 1а и 1d в твоём случае.

hibou ★★★★★
()

Может есть способ не подключать юсб-хаб по дефолту при запуске сделать это потом скриптом в првильном порядке?

kirill_rrr ★★★★★
()
Ответ на: комментарий от Rupricht

Вообще, lsusb -v - и там будут pci адреса, к которым можно привязаться, но не лучше ли раздавать ключи с линуксовой машины? Сам так собираюсь переводить hasplm с виртуалки на линуксовый хост.

GAMer ★★★★★
()
Для того чтобы оставить комментарий войдите или зарегистрируйтесь.