X9DRT-HIBFF マザーボードがインストールされたSupermicroサーバーがあります。
MellanoxのConnectX-3チップセットをベースにしたInfinibandが搭載されています。
Supermicroはファームウェアバージョン2.10.0700を供給していますが、残念ながらSR-IOVをサポートしていません。古すぎます。チップセットとBIOSはこれをサポートしていますが。
Mellanoxの新しいファームウェアにより、この機能が有効になります。 Mellanox自体は、一部のOEMパートナーにファームウェアを提供していますが、Supermicroには提供していません。
ibv_devinfoは以下を示しています:
$ Sudo ibv_devinfo
hca_id: mlx4_0
transport: InfiniBand (0)
fw_ver: 2.10.700
node_guid: 0025:90ff:ff17:5724
sys_image_guid: 0025:90ff:ff17:5727
vendor_id: 0x02c9
vendor_part_id: 4099
hw_ver: 0x0
board_id: SM_2191000001000
phys_port_cnt: 1
port: 1
state: PORT_DOWN (1)
max_mtu: 4096 (5)
active_mtu: 4096 (5)
sm_lid: 0
port_lid: 0
port_lmc: 0x00
だから問題は、メラノックスのファームウェアをこのOEMボードに書き込むことができるかということです。もしそうなら、どのように私は燃やすものを選択しますか?
このファームウェアテーブル を見ると、対応するファームウェアはわずかに異なるZipファイルにリンクしています。説明はほぼすべて同じで、同じベンダーのパーツIDが4099です。違いは名前とPSIDだけです。私のPSIDは次のとおりです:SM_2191000001000これはSupermicroからのものであるため、予想どおりそれらのいずれとも異なります。
ファームウェアをダウンロードして解凍します
Mellanoxからいくつかのツールをダウンロードし、対応するdebファイルをインストールして、Ubuntuインストールで「mlxburn」ユーティリティを取得します。
wget http://www.mellanox.com/downloads/MFT/mft-3.1.0-8.tgz
tar xzvf mft-3.1.0-8.tgz
cd mft-3.1.0-8/DEBS/
dpkg -i mft-3.1.0-8.AMD64.deb
現在のファームウェアから新しいファームウェアを生成するために必要なiniファイルを抽出します。これには、適切なPSIDが含まれます。
mstflint -d $PCIBUS dc > myinifile.ini
$ PCIBUS変数を、カードが接続されているPCIバス(04.00.0など)に変更します。
Iniファイルの[HCA]セクションの下に「sriov_en = true」行を追加します
次のようにファームウェアを生成します(ConnectX2でこのコマンドをテストしました)。
mlxburn -fw fw-ConnectX2-rel.mlx -exp_rom FlexBoot-3.4.112/ConnectX_Flexboot_4099_ROM-3.4.112.mrom -conf myinifile.ini -wrimage fw-ConnectX2-rel-sriov-enabled.bin
カードに新しいファームウェアをインストールします
mlxfwmanager -u -d $PCIBUS -i fw-ConnectX2-rel-sriov-enabled.bin -f