#!/bin/bash declare -r EXIT_SUCCESS="0" declare -r EXIT_ERROR="1" declare -r PENDING_COMPONENT_FW="/usr/bin/install-pending-fw.py" declare -r FW_UPGRADE_SCRIPT="/usr/bin/mlnx-fw-upgrade.sh" declare -r SYSFS_PWR_CYCLE="/sys/devices/platform/mlxplat/mlxreg-io/hwmon/hwmon*/pwr_cycle" FORCE_REBOOT="no" function ParseArguments() { while [ $# -ge 1 ]; do case "$1" in -f|--force) FORCE_REBOOT="yes" ;; esac shift done } function SafePwrCycle() { sync ; sync umount -fa > /dev/null 2&>1 echo 1 > $SYSFS_PWR_CYCLE sleep 3 echo 0 > $SYSFS_PWR_CYCLE } ParseArguments "$@" ${FW_UPGRADE_SCRIPT} --upgrade --verbose EXIT_CODE="$?" if [[ "${EXIT_CODE}" != "${EXIT_SUCCESS}" ]]; then echo "Failed to burn MLNX FW: errno=${EXIT_CODE}" if [[ "${FORCE_REBOOT}" != "yes" ]]; then echo "Reboot is interrupted: use -f|--force to override" exit "${EXIT_ERROR}" fi fi ${PENDING_COMPONENT_FW} SafePwrCycle