summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorRaptor Engineering Development Team <support@raptorengineering.com>2018-01-21 16:09:28 -0600
committerRaptor Engineering Development Team <support@raptorengineering.com>2018-01-21 16:09:28 -0600
commit85ff156eca61043b1a8fb145955694bed445e678 (patch)
tree0f90a4207285aa4afef74c54b6181315926f557f
parent555f9f1c1e6b724fe7de468054b14b952bbcfb58 (diff)
downloadtalos-openbmc-85ff156eca61043b1a8fb145955694bed445e678.tar.gz
talos-openbmc-85ff156eca61043b1a8fb145955694bed445e678.zip
Add watchdog mode to OCC enable service
This works around transient OCC communication failure disabling fan control
-rwxr-xr-xmeta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/occ-active.sh20
-rw-r--r--meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/op-occ-enable@.service5
2 files changed, 20 insertions, 5 deletions
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/occ-active.sh b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/occ-active.sh
index c005c7dd8..c4c791f85 100755
--- a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/occ-active.sh
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/occ-active.sh
@@ -5,6 +5,8 @@ if [ "$1" == "disable" ]; then
value='false'
elif [ "$1" == "enable" ]; then
value='true'
+elif [ "$1" == "watchdog" ]; then
+ value='true'
else
echo "Usage: occ-active.sh [argument]"
echo " enable - set occ's to active state"
@@ -14,10 +16,24 @@ fi
OCC_CONTROL_SERVICE="org.open_power.OCC.Control"
-# Rescan bus to find OCCs
-openpower-proc-control scanFSI
+if [ "$value" == "true" ]; then
+ # Rescan bus to find OCCs
+ openpower-proc-control scanFSI
+fi
busctl tree $OCC_CONTROL_SERVICE --list | grep occ | xargs -r -n1 -I{} \
busctl set-property $OCC_CONTROL_SERVICE {} org.open_power.OCC.Status \
OccActive b $value
+
+if [ "$1" == "watchdog" ]; then
+ # Start watchdog
+ while [ 1 == 1 ]; do
+ sleep 5
+ if [ ! -e /sys/bus/platform/drivers/occ/sbefifo1-dev0/occ1-dev0/occ_status ]; then
+ # OCC driver failed. Rescan bus to recover.
+ openpower-proc-control scanFSI
+ fi
+ done
+fi
+
exit 0
diff --git a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/op-occ-enable@.service b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/op-occ-enable@.service
index 2e969b8e8..6db68af53 100644
--- a/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/op-occ-enable@.service
+++ b/meta-openbmc-machines/meta-openpower/common/recipes-phosphor/occ/openpower-occ-control/op-occ-enable@.service
@@ -9,7 +9,6 @@ After=obmc-host-ipl-complete@%i.target
ConditionPathExists=/run/openbmc/host@0-ipl-complete
[Service]
-ExecStart=/usr/bin/env occ-active.sh enable
+ExecStart=/usr/bin/env occ-active.sh watchdog
SyslogIdentifier=occ-active.sh
-Type=oneshot
-
+Type=simple
OpenPOWER on IntegriCloud