我有一台 Supermicro 服务器,X9DRT-HIBFF主板已安装。
它具有基于 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
所以问题是,Mellanox 固件可以刻录到这个 OEM 板上吗?如果可以,我该如何选择刻录哪一个?
看着这个固件表,相应的固件链接到略有不同的 ZIP 文件。描述几乎完全相同,供应商部件 ID 相同,为 4099。它们之间的唯一区别是名称和 PSID。我的 PSID 是:SM_2191000001000,这与它们中的任何一个都不同,因为它来自 Supermicro。
答案1
下载固件并解压
从 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