From 75203caaced49aa42e92596634840147424feda6 Mon Sep 17 00:00:00 2001 From: ubuntu Date: Sun, 11 Apr 2021 21:13:44 -0700 Subject: [PATCH 1/4] DellEMC S6100 SSD Monitor Porting Changes in master --- .../debian/platform-modules-s6100.install | 8 ++ .../s6100/scripts/iSMART_64 | Bin 0 -> 221840 bytes .../s6100/scripts/platform_reboot_pre_check | 33 +++++ .../s6100/scripts/s6100_platform.sh | 2 + .../s6100/scripts/s6100_ssd_mon.sh | 21 ++++ .../s6100/scripts/s6100_ssd_upgrade_status.sh | 117 ++++++++++++++++++ .../s6100/scripts/soft-reboot_plugin | 1 + .../s6100/systemd/s6100-ssd-monitor.service | 12 ++ .../s6100/systemd/s6100-ssd-monitor.timer | 12 ++ .../systemd/s6100-ssd-upgrade-status.service | 14 +++ 10 files changed, 220 insertions(+) create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_mon.sh create mode 100755 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh create mode 120000 platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin create mode 100644 platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service create mode 100644 platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer create mode 100644 platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service diff --git a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install index 4299aa60c719..db5e558b3dab 100644 --- a/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install +++ b/platform/broadcom/sonic-platform-modules-dell/debian/platform-modules-s6100.install @@ -10,19 +10,27 @@ s6100/scripts/platform_reboot_override usr/share/sonic/device/x86_64-dell_s6100_ s6100/scripts/fast-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/track_reboot_reason.sh usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/warm-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 +s6100/scripts/soft-reboot_plugin usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/ssd-fw-upgrade usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/override.conf /etc/systemd/system/systemd-reboot.service.d common/dell_lpc_mon.sh usr/local/bin +s6100/scripts/s6100_ssd_mon.sh usr/local/bin +s6100/scripts/s6100_ssd_upgrade_status.sh usr/local/bin common/actions.sh usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_sensors.py usr/local/bin +s6100/scripts/platform_reboot_pre_check usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/hw-management-generate-dump.sh usr/bin s6100/modules/sonic_platform-1.0-py2-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/modules/sonic_platform-1.0-py3-none-any.whl usr/share/sonic/device/x86_64-dell_s6100_c2538-r0 s6100/scripts/platform_watchdog_enable.sh usr/local/bin s6100/scripts/platform_watchdog_disable.sh usr/local/bin s6100/scripts/sensors usr/bin +s6100/scripts/iSMART_64 usr/local/bin s6100/systemd/platform-modules-s6100.service etc/systemd/system s6100/systemd/s6100-lpc-monitor.service etc/systemd/system +s6100/systemd/s6100-ssd-monitor.service etc/systemd/system +s6100/systemd/s6100-ssd-monitor.timer etc/systemd/system +s6100/systemd/s6100-ssd-upgrade-status.service etc/systemd/system s6100/systemd/s6100-reboot-cause.service etc/systemd/system s6100/systemd/s6100-i2c-enumerate.service etc/systemd/system tools/flashrom/flashrom usr/local/bin/ diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/iSMART_64 new file mode 100755 index 0000000000000000000000000000000000000000..e485a6ee104e320cf8b24c78ed003782d0cf9b4b GIT binary patch literal 221840 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

S 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%0Ds#GQE86$Jw`s#spZXx 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 $SSD_UPGRADE_LOG + +iSMART="/usr/local/bin/iSMART_64" +iSMART_OPTIONS="-d /dev/sda" +iSMART_CMD=`$iSMART $iSMART_OPTIONS` + +SSD_UPGRADE_STATUS1=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 09 --offset 211; io_rd_wr.py --get --offset 212` +SSD_UPGRADE_STATUS1=$(echo "$SSD_UPGRADE_STATUS1" | awk '{print $NF}') + +SSD_UPGRADE_STATUS2=`io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 0A --offset 211; io_rd_wr.py --get --offset 212` +SSD_UPGRADE_STATUS2=$(echo "$SSD_UPGRADE_STATUS2" | awk '{print $NF}') + +if [ $SSD_UPGRADE_STATUS1 == "2" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_error + + echo "$0 `date` Upgraded to unknown version after first mp_64 upgrade." >> $SSD_UPGRADE_LOG + +elif [ $SSD_UPGRADE_STATUS2 == "2" ];then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_error + + echo "$0 `date` Upgraded to unknown version after second mp_64 upgrade." >> $SSD_UPGRADE_LOG + +elif [ $SSD_FW_VERSION == "s141002g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; then + # If SSD Firmware is upgraded + GPIO_STATUS=$(echo "$iSMART_CMD" | grep GPIO | awk '{print $NF}') + + if [ $GPIO_STATUS != "0x01" ];then + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + echo "$0 `date` The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" >> $SSD_UPGRADE_LOG + echo "$0 `date` soft-/fast-/warm-reboot is allowed." >> $SSD_UPGRADE_LOG + + else + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_high + fi + + systemctl start --no-block s6100-ssd-monitor.timer + + if [ $SSD_UPGRADE_STATUS1 == "0" ]; then + if [ $SSD_MODEL == "3IE" ];then + echo "$0 `date` SSD FW upgraded from S141002C to S141002G in first mp_64." >> $SSD_UPGRADE_LOG + else + echo "$0 `date` SSD FW upgraded from S16425c1 to S16425cG in first mp_64." >> $SSD_UPGRADE_LOG + fi + elif [ $SSD_UPGRADE_STATUS2 == "1" ]; then + echo "$0 `date` SSD entered loader mode in first mp_64 and upgraded to latest version after second mp_64." >> $SSD_UPGRADE_LOG + fi + +else + if [ $SSD_UPGRADE_STATUS1 == "ff" ] && [ $SSD_UPGRADE_STATUS2 == "ff" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_pending_upgrade + + echo "$0 `date` SSD upgrade didn’t happen." >> $SSD_UPGRADE_LOG + + elif [ $SSD_UPGRADE_STATUS1 == "1" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + + echo "$0 `date` SSD entered loader mode in first mp_64 upgrade." >> $SSD_UPGRADE_LOG + + if [ $SSD_UPGRADE_STATUS2 == "0" ]; then + echo "$0 `date` SSD entered loader mode in first mp_64 and recovered back to older version in second mp_64." >> $SSD_UPGRADE_LOG + fi + fi + +fi + +echo "$0 `date` SMF Register 1 = $SSD_UPGRADE_STATUS1" >> $SSD_UPGRADE_LOG +echo "$0 `date` SMF Register 2 = $SSD_UPGRADE_STATUS2" >> $SSD_UPGRADE_LOG +echo "$SMART_CMD" >> $SSD_UPGRADE_LOG +echo "$iSMART_CMD" >> $SSD_UPGRADE_LOG +sync +# Clearing the upgrade status +io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 09 --offset 211; io_rd_wr.py --set --val ff --offset 213 +io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 0A --offset 211; io_rd_wr.py --set --val ff --offset 213 diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin new file mode 120000 index 000000000000..180742bbc4d5 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/soft-reboot_plugin @@ -0,0 +1 @@ +fast-reboot_plugin \ No newline at end of file diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service new file mode 100644 index 000000000000..75e3b224b65b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.service @@ -0,0 +1,12 @@ +[Unit] +Description=Dell S6100 SSD monitoring poller +DefaultDependencies=no + +[Service] +User=root +ExecStart=/usr/local/bin/s6100_ssd_mon.sh +RemainAfterExit=no + +[Install] +WantedBy=multi-user.target + diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer new file mode 100644 index 000000000000..ede2b636d80b --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-monitor.timer @@ -0,0 +1,12 @@ +[Unit] +Description=Dell S6100 SSD monitoring poller timer +DefaultDependencies=no +After=pmon.service + +[Timer] +OnBootSec=5min +OnUnitActiveSec=60min + +[Install] +WantedBy=timers.target + diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service new file mode 100644 index 000000000000..4de9cf73b965 --- /dev/null +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/systemd/s6100-ssd-upgrade-status.service @@ -0,0 +1,14 @@ +[Unit] +Description= Checking Dell S6100 SSD upgrade status +After=pmon.service +DefaultDependencies=no + +[Service] +User=root +Type=oneshot +ExecStart=/usr/local/bin/s6100_ssd_upgrade_status.sh +RemainAfterExit=no + +[Install] +WantedBy=multi-user.target + From d0896bc6d769eaf663cb0b7ee5c2ff8e64856b0e Mon Sep 17 00:00:00 2001 From: ubuntu Date: Fri, 23 Apr 2021 05:52:16 -0700 Subject: [PATCH 2/4] Handling GPIO7 high cases with loader mode upgrade --- .../s6100/scripts/s6100_ssd_upgrade_status.sh | 30 +++++++++++-------- 1 file changed, 17 insertions(+), 13 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh index e55492e9a951..e771d734bd80 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh @@ -69,20 +69,24 @@ elif [ $SSD_FW_VERSION == "s141002g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; the echo "$0 `date` soft-/fast-/warm-reboot is allowed." >> $SSD_UPGRADE_LOG else - rm -rf $SSD_FW_UPGRADE/GPIO7_* - touch $SSD_FW_UPGRADE/GPIO7_high - fi - - systemctl start --no-block s6100-ssd-monitor.timer - - if [ $SSD_UPGRADE_STATUS1 == "0" ]; then - if [ $SSD_MODEL == "3IE" ];then - echo "$0 `date` SSD FW upgraded from S141002C to S141002G in first mp_64." >> $SSD_UPGRADE_LOG - else - echo "$0 `date` SSD FW upgraded from S16425c1 to S16425cG in first mp_64." >> $SSD_UPGRADE_LOG + if [ $SSD_UPGRADE_STATUS1 == "0" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_high + systemctl start --no-block s6100-ssd-monitor.timer + + if [ $SSD_MODEL == "3IE" ];then + echo "$0 `date` SSD FW upgraded from S141002C to S141002G in first mp_64." >> $SSD_UPGRADE_LOG + else + echo "$0 `date` SSD FW upgraded from S16425c1 to S16425cG in first mp_64." >> $SSD_UPGRADE_LOG + fi + elif [ $SSD_UPGRADE_STATUS2 == "1" ]; then + rm -rf $SSD_FW_UPGRADE/GPIO7_* + touch $SSD_FW_UPGRADE/GPIO7_low + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" + logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." + + echo "$0 `date` SSD entered loader mode in first mp_64 and upgraded to latest version after second mp_64." >> $SSD_UPGRADE_LOG fi - elif [ $SSD_UPGRADE_STATUS2 == "1" ]; then - echo "$0 `date` SSD entered loader mode in first mp_64 and upgraded to latest version after second mp_64." >> $SSD_UPGRADE_LOG fi else From 28cf8d4032ca8a158d763aca9e12135f1e39d0ec Mon Sep 17 00:00:00 2001 From: Santhosh Kumar T <53558409+santhosh-kt@users.noreply.github.com> Date: Tue, 17 Aug 2021 17:22:59 +0530 Subject: [PATCH 3/4] Changing error messages --- .../s6100/scripts/platform_reboot_pre_check | 15 ++++++++++----- 1 file changed, 10 insertions(+), 5 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check index 6bdee8e46309..d7eac17862f6 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/platform_reboot_pre_check @@ -2,15 +2,20 @@ SSD_FW_UPGRADE="/host/ssd_fw_upgrade" _error_msg(){ - echo "The SSD on this unit is faulty. Do not power-cycle/reboot this unit." + echo "The SSD on this unit is $1. Do not power-cycle/reboot this unit." echo "soft-/fast-/warm-reboot is allowed." - logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit." + logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is $1. Do not power-cycle/reboot this unit." logger -p user.crit -t DELL_S6100_SSD_MON "soft-/fast-/warm-reboot is allowed." } # Check SSD Status -if [ -e $SSD_FW_UPGRADE/GPIO7_low ] || [ -e $SSD_FW_UPGRADE/GPIO7_error ] || [ -e $SSD_FW_UPGRADE/GPIO7_pending_upgrade ]; then - _error_msg +if [ -e $SSD_FW_UPGRADE/GPIO7_pending_upgrade ]; then + _error_msg "running older firmware" + exit 1 +fi + +if [ -e $SSD_FW_UPGRADE/GPIO7_low ] || [ -e $SSD_FW_UPGRADE/GPIO7_error ]; then + _error_msg "faulty" exit 1 fi @@ -25,7 +30,7 @@ if [ -e $SSD_FW_UPGRADE/GPIO7_high ]; then if [ $GPIO_STATUS == "0x01" ];then exit 0 else - _error_msg + _error_msg "faulty" exit 1 fi fi From 4ad870c80fdac99a5b59d1ebd4a3cd5dfd5c6372 Mon Sep 17 00:00:00 2001 From: Santhosh Kumar T <53558409+santhosh-kt@users.noreply.github.com> Date: Tue, 17 Aug 2021 17:26:46 +0530 Subject: [PATCH 4/4] To handle newer SSD firmware version --- .../s6100/scripts/s6100_ssd_upgrade_status.sh | 13 +++++-------- 1 file changed, 5 insertions(+), 8 deletions(-) diff --git a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh index e771d734bd80..2c074fd3319c 100755 --- a/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh +++ b/platform/broadcom/sonic-platform-modules-dell/s6100/scripts/s6100_ssd_upgrade_status.sh @@ -50,13 +50,13 @@ if [ $SSD_UPGRADE_STATUS1 == "2" ]; then echo "$0 `date` Upgraded to unknown version after first mp_64 upgrade." >> $SSD_UPGRADE_LOG -elif [ $SSD_UPGRADE_STATUS2 == "2" ];then +elif [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "2" ];then rm -rf $SSD_FW_UPGRADE/GPIO7_* touch $SSD_FW_UPGRADE/GPIO7_error echo "$0 `date` Upgraded to unknown version after second mp_64 upgrade." >> $SSD_UPGRADE_LOG -elif [ $SSD_FW_VERSION == "s141002g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; then +elif [ $SSD_FW_VERSION == "s210506g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; then # If SSD Firmware is upgraded GPIO_STATUS=$(echo "$iSMART_CMD" | grep GPIO | awk '{print $NF}') @@ -75,11 +75,11 @@ elif [ $SSD_FW_VERSION == "s141002g" ] || [ $SSD_FW_VERSION == "s16425cg" ]; the systemctl start --no-block s6100-ssd-monitor.timer if [ $SSD_MODEL == "3IE" ];then - echo "$0 `date` SSD FW upgraded from S141002C to S141002G in first mp_64." >> $SSD_UPGRADE_LOG + echo "$0 `date` SSD FW upgraded from S141002C to S210506G in first mp_64." >> $SSD_UPGRADE_LOG else echo "$0 `date` SSD FW upgraded from S16425c1 to S16425cG in first mp_64." >> $SSD_UPGRADE_LOG fi - elif [ $SSD_UPGRADE_STATUS2 == "1" ]; then + elif [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "1" ]; then rm -rf $SSD_FW_UPGRADE/GPIO7_* touch $SSD_FW_UPGRADE/GPIO7_low logger -p user.crit -t DELL_S6100_SSD_MON "The SSD on this unit is faulty. Do not power-cycle/reboot this unit!" @@ -104,7 +104,7 @@ else echo "$0 `date` SSD entered loader mode in first mp_64 upgrade." >> $SSD_UPGRADE_LOG - if [ $SSD_UPGRADE_STATUS2 == "0" ]; then + if [ $SSD_MODEL == "3IE3" ] && [ $SSD_UPGRADE_STATUS2 == "0" ]; then echo "$0 `date` SSD entered loader mode in first mp_64 and recovered back to older version in second mp_64." >> $SSD_UPGRADE_LOG fi fi @@ -116,6 +116,3 @@ echo "$0 `date` SMF Register 2 = $SSD_UPGRADE_STATUS2" >> $SSD_UPGRADE_LOG echo "$SMART_CMD" >> $SSD_UPGRADE_LOG echo "$iSMART_CMD" >> $SSD_UPGRADE_LOG sync -# Clearing the upgrade status -io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 09 --offset 211; io_rd_wr.py --set --val ff --offset 213 -io_rd_wr.py --set --val 06 --offset 210; io_rd_wr.py --set --val 0A --offset 211; io_rd_wr.py --set --val ff --offset 213