Ez igazából félig-meddig afféle emlékeztető, hogy hátha később szükségem lesz rá, de egyben talán ha valaki találkozik hasonló problémával, akkor ezen tapasztalatok esetleg segíthetnek neki.
Szóval az történt, hogy az előzetes terveim szerint bővíteni szerettem volna a házi kis hálózatomat, hogy a szerver/NAS-t elérjem két gépről is 10Gbites hálón. A háziszerverben az egy SPF+ csatlakozós Mellanox Connectx-3 (CX311A) kártya helyett szállítással együtt 14e Ft-ért sikerült beszerezni egy két csatis ConnectX-3 Pro (CX312C) kártyát, tehát sinen voltam, mint József Attila. Csak alacsony hátlap volt hozzá, de ennyit elviselek, gondoltam volt. Megjön a kártya, ami azért jóval nagyobb, mint a CX311A, gyorsan ki is cseréltem az előzővel... és a bootolás után némi döbbenetemre a gép nem látta a kártyát:
cifu@CifuNAS:~$ sudo lshw -class network
*-network UNCLAIMED
description: Ethernet interface
product: MT27520 Family [ConnectX-3 Pro]
vendor: Mellanox Technologies
physical id: 0
bus info: pci@0000:06:00.0
version: 00
serial: ec:0d:9a:22:b5:d1
width: 64 bits
clock: 33MHz
capabilities: pm cap_list ethernet
configuration:
resources: irq:16 memory:f7900000-f79fffff
Először firmware problémára gyanakodtam, mivel mint kiderült, DellEMC "ízesítésű" kártyát sikerült vennem (PSID: EMC00000002). A firmware lecserélésével elszórakoztam egy ideig (nem volt bonyolult végül is, minden ott volt a Mellanox honlapján, csak igyekeztem körültekintően eljárni), ám a legnagyobb bánatomra a már Mellanox firmware-el bíró kártya is UNCLAIMED flaggel volt ellátva az lshw
lekérdezéskor.
Itt sikerült jó hosszú ideig teljesen félrevezetnem magam, ugyanis erre a flagre koncentráltam, ami leegyszerűsítve azt jelenti, hogy az adott hardware-hez nem lett betöltve driver. A legkülönfélébb Mellanox drivereket raktam fel, majd gyalultam le, minden eredmény nélkül. Közben találtam olyan fórumbejegyzéseket, amelyek az Ubuntu 16.04-es kijövetelekor a hasonló flaggel működésképtelen Wifi hálózati kártyákkal foglalkoztak, és már kínomban nekiálltam az ott javasolt megoldásokkal foglalkozni. A sokadik ilyen próbálkozásnál láttam arra vonatkozó kérdést, hogy a dmesg
mégis mit listáz ki a hardware kapcsán. Bakker, tényleg, én miért nem néztem még meg. Nosza:
...
[ 0.250742] pci 0000:06:00.0: BAR 1: no space for [mem size 0x10000000 64bit pref]
[ 0.250743] pci 0000:06:00.0: BAR 1: failed to assign [mem size 0x10000000 64bit pref]
[ 0.250744] pci 0000:06:00.0: BAR 8: no space for [mem size 0x100000000 64bit pref]
[ 0.250745] pci 0000:06:00.0: BAR 8: failed to assign [mem size 0x100000000 64bit pref]
[ 0.250746] pci 0000:06:00.0: BAR 3: assigned [mem 0x94000000-0x95ffffff 64bit pref]
[ 0.250751] pci 0000:06:00.0: BAR 5: no space for [mem size 0x20000000 64bit pref]
[ 0.250752] pci 0000:06:00.0: BAR 5: failed to assign [mem size 0x20000000 64bit pref]
[ 0.250753] pci 0000:06:00.0: BAR 3: assigned [mem 0x93000000-0x93ffffff]
[ 0.250755] pci 0000:06:00.0: BAR 7: no space for [mem size 0x00400000]
[ 0.250756] pci 0000:06:00.0: BAR 7: failed to assign [mem size 0x00400000]
[ 0.250757] pci 0000:06:00.0: BAR 1: no space for [mem size 0x10000000 64bit pref]
[ 0.250758] pci 0000:06:00.0: BAR 1: failed to assign [mem size 0x10000000 64bit pref]
[ 0.250764] pci 0000:06:00.0: BAR 0: assigned [mem 0xf7900000-0xf79fffff]
[ 0.250766] pci 0000:06:00.0: BAR 7: no space for [mem size 0x00400000]
[ 0.250767] pci 0000:06:00.0: BAR 7: failed to assign [mem size 0x00400000]
....
[ 0.371135] kernel: mlx4_core 0000:06:00.0: Missing UAR, aborting
....
Na bakker, szóval itt van a kutya elásva. Elkezdtem erre rákeresni, és a következő javaslat, mely a pci=realloc=off
Grub2 paraméter megadásáról szóltak. A probléma állítólag a 16.04-es Ubuntu óta él, nem tud a kernel elég memóriát elkülöníteni a kártyák számára, és emiatt a hardware nem lesz inicializálva. Ehhez képest találtam 2012-es bejegyzést, ahol már a 3.4-es kernelnél is jelentkezett a probléma. A megoldás? Az /etc/default/grub
-ot kell szerkeszteni, és beilleszteni a GRUB_CMDLINE_LINUX_DEFAULT=" pci=realloc=off"
sort. Ezután pedig sudo update-grub
, és mehet a restart.
Az eredmény: öröm és boldogság. Meg egy működő hálózati kártya...
Szerk.: Egyébként utólag már találtam egy másik javaslatot is, amely a firmware módosításáról szólt - ám nekem nem sikerült ez a megoldás (konkrétan nincs semmiféle opció .ini fájlok megszerzésére, csak .bin formátumú firmware-t találok a Mellanox oldalán).