我有安装了X9DRT-HIBFF主板的Supermicro服务器。
它具有基于Mellanox ConnectX-3芯片组的板载Infiniband。
Supermicro提供固件版本2.10.0700,不幸的是它不支持SR-IOV,太旧了。 虽然芯片组和BIOS确实支持这一点。
来自Mellanox的较新固件启用此function。 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板上吗? 如果是这样,我将如何select哪一个烧?
查看这个固件表 ,相应的固件链接到一个略有不同的ZIP文件。 这些描述几乎都与4099相同的供应商部件ID相同。它们之间的唯一区别是名称和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
将$ PCIBUSvariables更改为您的卡连接的PCI总线(即04.00.0)
在ini文件的[HCA]部分下添加“sriov_en = true”行
像这样生成你的固件(我testing了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