[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 <shlomibi@nvidia.com>
This commit is contained in:
shlomibitton 2021-02-25 12:41:29 +02:00 committed by GitHub
parent 5aee92e56d
commit 3de6a67353
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
2 changed files with 49 additions and 1 deletions

View File

@ -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

View File

@ -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
}