summaryrefslogtreecommitdiffstats
path: root/meta-openpower/recipes-phosphor/occ/openpower-occ-control/occ-active.sh
blob: c4c791f8583ab728021cc8654cffefd2887661ab (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
#!/bin/sh
# set and unset occ active for all occ's in system

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"
    echo "  disable - set occ's to inactive state"
    exit -1
fi

OCC_CONTROL_SERVICE="org.open_power.OCC.Control"

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
OpenPOWER on IntegriCloud