PCI BAR "не удалось назначить" ошибки с устройством SANLink2 Thunderbolt

Я пытаюсь подключить устройство Promise SANLink2 Thunderbolt-2-to-10-GbE-Ethernet к Lenovo ThinkPad под управлением Ubuntu 16.04. Система не распознает двойные интерфейсы Ethernet на устройстве. Если я смотрю на dmesg после подключения устройства вижу следующее:

[  169.822146] pci 0000:06:00.0: [8086:1567] type 01 class 0x060400
[  169.822534] pci 0000:06:00.0: supports D1 D2
[  169.822536] pci 0000:06:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[  169.830152] pci 0000:07:00.0: [8086:1567] type 01 class 0x060400
[  169.830362] pci 0000:07:00.0: supports D1 D2
[  169.830364] pci 0000:07:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[  169.830522] pci 0000:07:03.0: [8086:1567] type 01 class 0x060400
[  169.830729] pci 0000:07:03.0: supports D1 D2
[  169.830730] pci 0000:07:03.0: PME# supported from D0 D1 D2 D3hot D3cold
[  169.830841] pci 0000:07:04.0: [8086:1567] type 01 class 0x060400
[  169.831018] pci 0000:07:04.0: supports D1 D2
[  169.831019] pci 0000:07:04.0: PME# supported from D0 D1 D2 D3hot D3cold
[  169.831117] pci 0000:07:05.0: [8086:1567] type 01 class 0x060400
[  169.831350] pci 0000:07:05.0: supports D1 D2
[  169.831351] pci 0000:07:05.0: PME# supported from D0 D1 D2 D3hot D3cold
[  169.831491] pci 0000:07:06.0: [8086:1567] type 01 class 0x060400
[  169.831609] pci 0000:07:06.0: supports D1 D2
[  169.831610] pci 0000:07:06.0: PME# supported from D0 D1 D2 D3hot D3cold
[  169.831753] pci 0000:06:00.0: PCI bridge to [bus 07-3f]
[  169.831768] pci 0000:06:00.0:   bridge window [mem 0xb8000000-0xce0fffff]
[  169.831785] pci 0000:06:00.0:   bridge window [mem 0xd0000000-0xf1ffffff 64bit pref]
[  169.831915] pci 0000:08:00.0: [8086:1566] type 00 class 0x088000
[  169.831966] pci 0000:08:00.0: reg 0x10: [mem 0xce000000-0xce03ffff]
[  169.831982] pci 0000:08:00.0: reg 0x14: [mem 0xce040000-0xce040fff]
[  169.832327] pci 0000:08:00.0: supports D1 D2
[  169.832328] pci 0000:08:00.0: PME# supported from D0 D1 D2 D3hot D3cold
[  169.832498] pci 0000:07:00.0: PCI bridge to [bus 08]
[  169.832525] pci 0000:07:00.0:   bridge window [mem 0xce000000-0xce0fffff]
[  169.832648] pci 0000:07:03.0: PCI bridge to [bus 09-34]
[  169.832675] pci 0000:07:03.0:   bridge window [mem 0xb8000000-0xc5ffffff]
[  169.832693] pci 0000:07:03.0:   bridge window [mem 0xd0000000-0xe9ffffff 64bit pref]
[  169.832833] pci 0000:07:04.0: PCI bridge to [bus 35-3d]
[  169.832860] pci 0000:07:04.0:   bridge window [mem 0xc6000000-0xcdffffff]
[  169.832877] pci 0000:07:04.0:   bridge window [mem 0xea000000-0xf1ffffff 64bit pref]
[  169.833017] pci 0000:07:05.0: PCI bridge to [bus 3e]
[  169.833181] pci 0000:07:06.0: PCI bridge to [bus 3f]
[  169.833301] pci_bus 0000:07: Allocating resources
[  169.833365] pci 0000:07:00.0: bridge window [io  0x1000-0x0fff] to [bus 08] add_size 1000
[  169.833369] pci 0000:07:00.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 08] add_size 200000 add_align 100000
[  169.833395] pci 0000:07:03.0: bridge window [io  0x1000-0x0fff] to [bus 09-34] add_size 1000
[  169.833421] pci 0000:07:04.0: bridge window [io  0x1000-0x0fff] to [bus 35-3d] add_size 1000
[  169.833446] pci 0000:07:05.0: bridge window [io  0x1000-0x0fff] to [bus 3e] add_size 1000
[  169.833448] pci 0000:07:05.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 3e] add_size 200000 add_align 100000
[  169.833450] pci 0000:07:05.0: bridge window [mem 0x00100000-0x000fffff] to [bus 3e] add_size 200000 add_align 100000
[  169.833475] pci 0000:07:06.0: bridge window [io  0x1000-0x0fff] to [bus 3f] add_size 1000
[  169.833477] pci 0000:07:06.0: bridge window [mem 0x00100000-0x000fffff 64bit pref] to [bus 3f] add_size 200000 add_align 100000
[  169.833478] pci 0000:07:06.0: bridge window [mem 0x00100000-0x000fffff] to [bus 3f] add_size 200000 add_align 100000
[  169.833505] pci 0000:07:00.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833507] pci 0000:07:03.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833509] pci 0000:07:04.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833511] pci 0000:07:05.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833514] pci 0000:07:06.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833516] pci 0000:06:00.0: bridge window [io  0x1000-0x0fff] to [bus 07-3f] add_size 5000
[  169.833519] pci 0000:06:00.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 5000 min_align 1000
[  169.833521] pci 0000:06:00.0: res[13]=[io  0x1000-0x5fff] res_to_dev_res add_size 5000 min_align 1000
[  169.833525] pci 0000:06:00.0: BAR 13: assigned [io  0x6000-0xafff]
[  169.833532] pci 0000:07:00.0: res[15]=[mem 0x00100000-0x000fffff 64bit pref] res_to_dev_res add_size 200000 min_align 100000
[  169.833534] pci 0000:07:00.0: res[15]=[mem 0x00100000-0x002fffff 64bit pref] res_to_dev_res add_size 200000 min_align 100000
[  169.833537] pci 0000:07:05.0: res[14]=[mem 0x00100000-0x000fffff] res_to_dev_res add_size 200000 min_align 100000
[  169.833539] pci 0000:07:05.0: res[14]=[mem 0x00100000-0x002fffff] res_to_dev_res add_size 200000 min_align 100000
[  169.833542] pci 0000:07:05.0: res[15]=[mem 0x00100000-0x000fffff 64bit pref] res_to_dev_res add_size 200000 min_align 100000
[  169.833544] pci 0000:07:05.0: res[15]=[mem 0x00100000-0x002fffff 64bit pref] res_to_dev_res add_size 200000 min_align 100000
[  169.833547] pci 0000:07:06.0: res[14]=[mem 0x00100000-0x000fffff] res_to_dev_res add_size 200000 min_align 100000
[  169.833549] pci 0000:07:06.0: res[14]=[mem 0x00100000-0x002fffff] res_to_dev_res add_size 200000 min_align 100000
[  169.833552] pci 0000:07:06.0: res[15]=[mem 0x00100000-0x000fffff 64bit pref] res_to_dev_res add_size 200000 min_align 100000
[  169.833554] pci 0000:07:06.0: res[15]=[mem 0x00100000-0x002fffff 64bit pref] res_to_dev_res add_size 200000 min_align 100000
[  169.833556] pci 0000:07:00.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833559] pci 0000:07:00.0: res[13]=[io  0x1000-0x1fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833561] pci 0000:07:03.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833563] pci 0000:07:03.0: res[13]=[io  0x1000-0x1fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833565] pci 0000:07:04.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833568] pci 0000:07:04.0: res[13]=[io  0x1000-0x1fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833570] pci 0000:07:05.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833573] pci 0000:07:05.0: res[13]=[io  0x1000-0x1fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833575] pci 0000:07:06.0: res[13]=[io  0x1000-0x0fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833577] pci 0000:07:06.0: res[13]=[io  0x1000-0x1fff] res_to_dev_res add_size 1000 min_align 1000
[  169.833581] pci 0000:07:00.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833583] pci 0000:07:00.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833585] pci 0000:07:05.0: BAR 14: no space for [mem size 0x00200000]
[  169.833587] pci 0000:07:05.0: BAR 14: failed to assign [mem size 0x00200000]
[  169.833590] pci 0000:07:05.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833593] pci 0000:07:05.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833595] pci 0000:07:06.0: BAR 14: no space for [mem size 0x00200000]
[  169.833597] pci 0000:07:06.0: BAR 14: failed to assign [mem size 0x00200000]
[  169.833600] pci 0000:07:06.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833602] pci 0000:07:06.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833605] pci 0000:07:00.0: BAR 13: assigned [io  0x6000-0x6fff]
[  169.833607] pci 0000:07:03.0: BAR 13: assigned [io  0x7000-0x7fff]
[  169.833609] pci 0000:07:04.0: BAR 13: assigned [io  0x8000-0x8fff]
[  169.833611] pci 0000:07:05.0: BAR 13: assigned [io  0x9000-0x9fff]
[  169.833614] pci 0000:07:06.0: BAR 13: assigned [io  0xa000-0xafff]
[  169.833618] pci 0000:07:06.0: BAR 14: no space for [mem size 0x00200000]
[  169.833621] pci 0000:07:06.0: BAR 14: failed to assign [mem size 0x00200000]
[  169.833624] pci 0000:07:06.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833626] pci 0000:07:06.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833629] pci 0000:07:05.0: BAR 14: no space for [mem size 0x00200000]
[  169.833631] pci 0000:07:05.0: BAR 14: failed to assign [mem size 0x00200000]
[  169.833634] pci 0000:07:05.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833636] pci 0000:07:05.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833640] pci 0000:07:00.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833642] pci 0000:07:00.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833645] pci 0000:07:00.0: PCI bridge to [bus 08]
[  169.833652] pci 0000:07:00.0:   bridge window [io  0x6000-0x6fff]
[  169.833668] pci 0000:07:00.0:   bridge window [mem 0xce000000-0xce0fffff]
[  169.833699] pci 0000:07:03.0: PCI bridge to [bus 09-34]
[  169.833706] pci 0000:07:03.0:   bridge window [io  0x7000-0x7fff]
[  169.833722] pci 0000:07:03.0:   bridge window [mem 0xb8000000-0xc5ffffff]
[  169.833733] pci 0000:07:03.0:   bridge window [mem 0xd0000000-0xe9ffffff 64bit pref]
[  169.833754] pci 0000:07:04.0: PCI bridge to [bus 35-3d]
[  169.833760] pci 0000:07:04.0:   bridge window [io  0x8000-0x8fff]
[  169.833776] pci 0000:07:04.0:   bridge window [mem 0xc6000000-0xcdffffff]
[  169.833787] pci 0000:07:04.0:   bridge window [mem 0xea000000-0xf1ffffff 64bit pref]
[  169.833807] pci 0000:07:05.0: PCI bridge to [bus 3e]
[  169.833813] pci 0000:07:05.0:   bridge window [io  0x9000-0x9fff]
[  169.833889] pci 0000:07:06.0: PCI bridge to [bus 3f]
[  169.833896] pci 0000:07:06.0:   bridge window [io  0xa000-0xafff]
[  169.833937] pci 0000:06:00.0: PCI bridge to [bus 07-3f]
[  169.833943] pci 0000:06:00.0:   bridge window [io  0x6000-0xafff]
[  169.833968] pci 0000:06:00.0:   bridge window [mem 0xb8000000-0xce0fffff]
[  169.833978] pci 0000:06:00.0:   bridge window [mem 0xd0000000-0xf1ffffff 64bit pref]
[  169.834050] pcieport 0000:06:00.0: enabling device (0006 -> 0007)
[  169.834409] pcieport 0000:07:00.0: enabling device (0006 -> 0007)
[  169.834672] pcieport 0000:07:03.0: enabling device (0006 -> 0007)
[  169.834952] pcieport 0000:07:04.0: enabling device (0006 -> 0007)
[  169.835555] pcieport 0000:07:05.0: enabling device (0004 -> 0005)
[  169.835778] pcieport 0000:07:06.0: enabling device (0004 -> 0005)

Обратите внимание на регион, который кажется проблемой:

[  169.833581] pci 0000:07:00.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833583] pci 0000:07:00.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833585] pci 0000:07:05.0: BAR 14: no space for [mem size 0x00200000]
[  169.833587] pci 0000:07:05.0: BAR 14: failed to assign [mem size 0x00200000]
[  169.833590] pci 0000:07:05.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833593] pci 0000:07:05.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833595] pci 0000:07:06.0: BAR 14: no space for [mem size 0x00200000]
[  169.833597] pci 0000:07:06.0: BAR 14: failed to assign [mem size 0x00200000]
[  169.833600] pci 0000:07:06.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833602] pci 0000:07:06.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833605] pci 0000:07:00.0: BAR 13: assigned [io  0x6000-0x6fff]
[  169.833607] pci 0000:07:03.0: BAR 13: assigned [io  0x7000-0x7fff]
[  169.833609] pci 0000:07:04.0: BAR 13: assigned [io  0x8000-0x8fff]
[  169.833611] pci 0000:07:05.0: BAR 13: assigned [io  0x9000-0x9fff]
[  169.833614] pci 0000:07:06.0: BAR 13: assigned [io  0xa000-0xafff]
[  169.833618] pci 0000:07:06.0: BAR 14: no space for [mem size 0x00200000]
[  169.833621] pci 0000:07:06.0: BAR 14: failed to assign [mem size 0x00200000]
[  169.833624] pci 0000:07:06.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833626] pci 0000:07:06.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833629] pci 0000:07:05.0: BAR 14: no space for [mem size 0x00200000]
[  169.833631] pci 0000:07:05.0: BAR 14: failed to assign [mem size 0x00200000]
[  169.833634] pci 0000:07:05.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833636] pci 0000:07:05.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]
[  169.833640] pci 0000:07:00.0: BAR 15: no space for [mem size 0x00200000 64bit pref]
[  169.833642] pci 0000:07:00.0: BAR 15: failed to assign [mem size 0x00200000 64bit pref]

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

Я обнаружил упоминания о похожих проблемах на других трекерах ошибок дистрибутива, но не нашел решений, помогающих моей проблеме. Я попробовал последнее основное ядро ​​(v4.7), чтобы увидеть, были ли какие-либо недавние исправления, но я вижу то же самое поведение.

1 ответ

Если бы я мог прокомментировать, это был бы комментарий - потому что у меня пока нет окончательного решения. Я страдаю от этого на Thunderbolt 3 с картами расширения Titan Ridge. Это только влияет на мой eGPU - мой SANLink3 N1 и Dell Thunderbolt 3 SSD выглядят незатронутыми. Либо их BAR назначены, либо на них не влияет то, что они не могут быть назначены. Я сделал что-то, чтобы помочь, но еще не полностью решил это. У моего внешнего R9 Nano есть такой же BAR, как у вас, возможно, с точным размером и типом, который не работает: [mem size 0x00200000 64bit pref]

Некоторые вещи, которые я нашел, могут помочь:

  • Установите обновление BIOS, если доступно
  • Обновите прошивку NVM Thunderbolt, если она доступна ( https://github.com/torvalds/linux/blob/master/Documentation/admin-guide/thunderbolt.rst).
  • Intel VT-d включен в BIOS
  • Выше 4G декодирование включено в BIOS
  • В GRUB вы можете установить параметры ядра
  • intel_iommu = on или intel_iommu = igfx_only, если это нарушает ваше видео
  • pci = nocrs, realloc (nocrs позволяет игнорировать больше ограничений, установленных BIOS)
  • Может быть, попробуйте pci = noacpi (может что-то сломать или нет)
  • Найдите больше вариантов здесь: https://www.kernel.org/doc/html/latest/admin-guide/kernel-parameters.html
  • Попробуйте новейшее ядро ​​- Linux 4.19 (стабильный) или Linux 4.20-rc2 (передовой)

С Titan Ridge pci = assign-busse может очень помочь, особенно если использовать контроллер Thunderbolt в неподдерживаемой системе (такой как AMD), но это нарушает любую реализацию Thunderbolt до Titan Ridge - так что не используйте этот.

Я не знаю, был ли у Thunderbolt 2 уровень безопасности или нет. Но в крайнем случае вы можете включить поддержку загрузки Thunderbolt и дополнительное ПЗУ Thunderbolt в BIOS, а также отключить уровни безопасности, если это применимо. Затем подключите SANLink к компьютеру до его включения, и, надеюсь, BIOS выделит его (в этом случае удалите параметры ядра, с которыми вы экспериментировали для Linux). Это не тот путь, которым мы хотим двигаться вперед - все должно решаться в ОС, где код можно легко обновлять, проверять и отлаживать. Но на данный момент BIOS будет продолжать преследовать нас.

Если вы хотите использовать ядро ​​4.20-rc2 прямо сейчас, вам придется скомпилировать свое собственное - как и в очередной раз, Ubuntu терпит неудачу при сборке основной линии, и никто ничего не делает с этим. http://kernel.ubuntu.com/~kernel-ppa/mainline/

Удачи! Я знаю, что это два года и три месяца назад, поэтому у вас может даже не быть компьютера. Но он имеет 766 просмотров, и, возможно, другие люди будут заинтересованы в некотором подобии решения.

Другие вопросы по тегам