[aarch64] Mellanox ConnectX-3 Pro Ethernetコントローラのネットワーク接続に失敗
Mellanoxネットワークは、特定のファームウェア・バージョンのMellanox ConnectX-3 Pro Ethernetコントローラを使用するArmプラットフォーム・システムで失敗することがあります。 通常、問題は次のdmesg出力になります:
... [ 21.605491] mlx4_core 0001:01:00.0: Failed to initialize event queue table, aborting [ 22.660967] mlx4_core: probe of 0001:01:00.0 failed with error -12 [ 22.704966] mlx4_en: Mellanox ConnectX HCA Ethernet driver v4.0-0 [ 22.711355] mlx4_en 0000:01:00.0: Activating port:1 [ 22.742948] mlx4_en: 0000:01:00.0: Port 1: Using 32 TX rings [ 22.748600] mlx4_en: 0000:01:00.0: Port 1: Using 8 RX rings [ 22.754437] mlx4_en: 0000:01:00.0: Port 1: Initializing port [ 22.760602] mlx4_en 0000:01:00.0: registered PHC clock [ 22.766283] mlx4_en 0000:01:00.0: Activating port:2 [ 22.766956] mlx4_core 0000:01:00.0 enp1s0: renamed from eth0 [ 22.778621] mlx4_en: 0000:01:00.0: Port 2: Failed to allocate NIC resources [ 22.785776] mlx4_en 0000:01:00.0: removed PHC [ 25.488635] mlx4_en: enp1s0: Steering Mode 1 ...
この問題は、ブート時にmaxcpus=8カーネル・パラメータを使用して解決でき、ブート・プロセス中に使用可能なCPUの数を制限できます。 システムの起動が完了すると、Systemdは使用可能なすべてのCPUを有効にし、パフォーマンスへの影響はなくなります。
システムのブート時にすべてのカーネルに対して使用されるようにこのパラメータを設定するには、GRUB構成を編集します。 これを行うには、テキスト・エディタで/etc/sysconfig/grub
のGRUB_CMDLINE_LINUX
行を編集します。次に例を示します:
GRUB_CMDLINE_LINUX="crashkernel=auto resume=/dev/mapper/linux1-swap rd.lvm.lv=linux1/root \ rd.lvm.lv=linux1/swap rhgb quiet maxcpus=8"
レガシーBIOSを使用している場合に次回のブートで使用されるようにgrub構成を変更内容で更新するには、次のコマンドを実行します:
# grub2-mkconfig -o /boot/grub2/grub.cfg
または、UEFIを使用してブートする場合は、次のコマンドを実行します:
# grub2-mkconfig -o /boot/efi/EFI/redhat/grub.cfg
この問題は、このハードウェアのあとのファームウェア・バージョンでのみ発生します。 HVE102M-0.2
ファームウェアを使用したカードでは問題はレプリケートされませんが、ファームウェアがHVE104N-1.12
にアップグレードされたときには表示されます。 カード・ファームウェアをダウングレードすることで問題を回避することもできます。 (バグID 30877943)