From a134bfe0b2d315e4c227e1b7bab832315bd72e92 Mon Sep 17 00:00:00 2001 From: mssonicbld <79238446+mssonicbld@users.noreply.github.com> Date: Fri, 11 Aug 2023 04:34:52 +0800 Subject: [PATCH] [syncd.sh] Clear semaphore before updating firmware (#15818) (#16068) Why I did it The hw resources should be released before updating firmware. How I did it Added logic to release hw resources in syncd.sh script Signed-off-by: Vadym Hlushko Co-authored-by: Vadym Hlushko <62022266+vadymhlushko-mlnx@users.noreply.github.com> --- files/scripts/syncd.sh | 18 ++++++++++++++++++ 1 file changed, 18 insertions(+) diff --git a/files/scripts/syncd.sh b/files/scripts/syncd.sh index 8aacfe8f6c..827be1463f 100755 --- a/files/scripts/syncd.sh +++ b/files/scripts/syncd.sh @@ -2,6 +2,18 @@ . /usr/local/bin/syncd_common.sh +declare -r UNKN_MST="unknown" + +function GetMstDevice() { + local _MST_DEVICE="$(ls /dev/mst/*_pci_cr0 2>&1)" + + if [[ ! -c "${_MST_DEVICE}" ]]; then + echo "${UNKN_MST}" + else + echo "${_MST_DEVICE}" + fi +} + function startplatform() { # platform specific tasks @@ -23,6 +35,12 @@ function startplatform() { debug "Starting Firmware update procedure" /usr/bin/mst start --with_i2cdev + + local -r _MST_DEVICE="$(GetMstDevice)" + if [[ "${_MST_DEVICE}" != "${UNKN_MST}" ]]; then + /usr/bin/flint -d $_MST_DEVICE --clear_semaphore + fi + /usr/bin/mlnx-fw-upgrade.sh /etc/init.d/sxdkernel restart debug "Firmware update procedure ended"