diff --git a/scripts/disable_acs.sh b/scripts/disable_acs.sh new file mode 100644 index 0000000..d55a65d --- /dev/null +++ b/scripts/disable_acs.sh @@ -0,0 +1,8 @@ +for BDF in `lspci -d "*:*:*" | awk '{print $1}'`; do + # skip if it doesn't support ACS + sudo setpci -v -s ${BDF} ECAP_ACS+0x6.w > /dev/null 2>&1 + if [ $? -ne 0 ]; then + continue + fi + sudo setpci -v -s ${BDF} ECAP_ACS+0x6.w=0000 + done diff --git a/scripts/ib-sn-check.sh b/scripts/ib-sn-check.sh new file mode 100644 index 0000000..d894688 --- /dev/null +++ b/scripts/ib-sn-check.sh @@ -0,0 +1,27 @@ +#!/bin/bash + +# 获取符合条件的 Mellanox 网卡 PCI 地址列表 +pci_devices=$(lspci | grep Mellanox | grep -Ev 'Infi|X-5|0\.1' | awk '{print $1}') + +# 检查是否找到设备 +if [ -z "$pci_devices" ]; then + echo "未找到符合条件的 Mellanox 网卡设备。" + exit 1 +fi + +echo "正在查询 Mellanox 网卡序列号 (SN)..." +echo "----------------------------------" + +# 遍历每个 PCI 设备并查询序列号 +for pci in $pci_devices; do + echo "PCI 设备: $pci" + serial=$(lspci -vvv -s "$pci" | grep -i serial) + + if [ -n "$serial" ]; then + echo "序列号: $serial" + else + echo "未找到序列号信息。" + fi + + echo "----------------------------------" +done diff --git a/scripts/mellanox-fwupdate.sh b/scripts/mellanox-fwupdate.sh new file mode 100644 index 0000000..f8b57ae --- /dev/null +++ b/scripts/mellanox-fwupdate.sh @@ -0,0 +1,30 @@ +#!/bin/bash + +cd /opt/ +mst start + +# 检查必要命令 +command -v ibdev2netdev >/dev/null || { echo "错误:ibdev2netdev命令未找到"; exit 1; } +command -v flint >/dev/null || { echo "错误:flint命令未找到"; exit 1; } + +# 固件文件定义 +FW_FILE="fw-ConnectX7-rel-28_43_2566-MCX755106AS-HEA_Ax-UEFI-14.37.13-FlexBoot-3.7.500.signed.bin" +[ -f "$FW_FILE" ] || { echo "错误:固件文件 $FW_FILE 不存在"; exit 1; } + +# 设备过滤和处理 +ibdev2netdev -v | grep -Ev 'Umbriel|bond' | awk '{print $2}' | while read -r device; do + # 提取最后一位数字 + last_digit=${device##*_} + + # 检查是否为数字且为偶数 + if [[ "$last_digit" =~ ^[0-9]+$ ]] && [ $((last_digit % 2)) -eq 0 ]; then + echo "正在更新双数设备: $device" + if ! flint -d "$device" -y -i "$FW_FILE" b; then + echo "警告:设备 $device 更新失败" + fi + else + echo "跳过非双数设备: $device" + fi +done + +echo "固件更新操作完成"