From e2fab3d6bc9148368d86ff03e9733881059ccebd Mon Sep 17 00:00:00 2001 From: shlomibitton <60430976+shlomibitton@users.noreply.github.com> Date: Thu, 25 Feb 2021 12:41:29 +0200 Subject: [PATCH] [Mellanox] Add hw-mgmt patch for SimX platform adaptation (#6782) - Why I did it System is stuck on 'starting' state on SimX platform because of infinite loop on 'hw-management-ready.sh' script . The loop is polling to check if the hw-mgmt sysfs created before proceeding with the flow, for SimX platform the sysfs will never create so the system is not starting properly. - How I did it Add a condition to poll on hw-mgmt sysfs only if the switch is real HW and not SimX platform. - How to verify it Check "systemctl status hw-management.service" output on a SimX switch with this patch, the state will be "active". Signed-off-by: Shlomi Bitton --- .../0003-Make-hw-mgmt-SimX-compatiable.patch | 48 +++++++++++++++++++ platform/mellanox/mlnx-fw-upgrade.j2 | 2 +- 2 files changed, 49 insertions(+), 1 deletion(-) create mode 100644 platform/mellanox/hw-management/0003-Make-hw-mgmt-SimX-compatiable.patch diff --git a/platform/mellanox/hw-management/0003-Make-hw-mgmt-SimX-compatiable.patch b/platform/mellanox/hw-management/0003-Make-hw-mgmt-SimX-compatiable.patch new file mode 100644 index 000000000000..0eb3daa7977e --- /dev/null +++ b/platform/mellanox/hw-management/0003-Make-hw-mgmt-SimX-compatiable.patch @@ -0,0 +1,48 @@ +diff --git a/usr/usr/bin/hw-management-ready.sh b/usr/usr/bin/hw-management-ready.sh +index 3c9f7b6..05d143f 100755 +--- a/usr/usr/bin/hw-management-ready.sh ++++ b/usr/usr/bin/hw-management-ready.sh +@@ -49,9 +49,12 @@ if [ -d /var/run/hw-management ]; then + rm -fr /var/run/hw-management + fi + +-while [ ! -d /sys/devices/platform/mlxplat/mlxreg-hotplug/hwmon ] +-do +- sleep 1 +-done ++if [ -z "$(lspci -vvv | grep SimX)" ]; then ++ while [ ! -d /sys/devices/platform/mlxplat/mlxreg-hotplug/hwmon ] ++ do ++ sleep 1 ++ done ++fi ++ + echo "Start Chassis HW management service." + logger -t hw-management -p daemon.notice "Start Chassis HW management service." +diff --git a/usr/usr/bin/hw-management.sh b/usr/usr/bin/hw-management.sh +index 70f1297..e427a3d 100755 +--- a/usr/usr/bin/hw-management.sh ++++ b/usr/usr/bin/hw-management.sh +@@ -1110,6 +1110,13 @@ do_chip_down() + /usr/bin/hw-management-thermal-events.sh change hotplug_asic down %S %p + } + ++check_simx() ++{ ++ if [ -n "$(lspci -vvv | grep SimX)" ]; then ++ exit 0 ++ fi ++} ++ + __usage=" + Usage: $(basename $0) [Options] + +@@ -1135,6 +1142,8 @@ Options: + force-reload Performs hw-management 'stop' and the 'start. + " + ++check_simx ++ + case $ACTION in + start) + if [ -d /var/run/hw-management ]; then diff --git a/platform/mellanox/mlnx-fw-upgrade.j2 b/platform/mellanox/mlnx-fw-upgrade.j2 index 245ce75d5f18..e17ec176503c 100755 --- a/platform/mellanox/mlnx-fw-upgrade.j2 +++ b/platform/mellanox/mlnx-fw-upgrade.j2 @@ -251,7 +251,7 @@ function UpgradeFWFromImage() { } function ExitIfQEMU() { - if [[ $(cat /sys/devices/virtual/dmi/id/chassis_vendor) = "QEMU" ]]; then + if [ -n "$(lspci -vvv | grep SimX)" ]; then ExitSuccess "No FW upgrade for SimX platform" fi }