GNU Linux-libre 5.4.200-gnu1
[releases.git] / samples / mic / mpssd / mpss
1 #!/bin/bash
2 # SPDX-License-Identifier: GPL-2.0-only
3 # Intel MIC Platform Software Stack (MPSS)
4 #
5 # Copyright(c) 2013 Intel Corporation.
6 #
7 # Intel MIC User Space Tools.
8 #
9 # mpss  Start mpssd.
10 #
11 # chkconfig: 2345 95 05
12 # description: start MPSS stack processing.
13 #
14 ### BEGIN INIT INFO
15 # Provides: mpss
16 # Required-Start:
17 # Required-Stop:
18 # Short-Description: MPSS stack control
19 # Description: MPSS stack control
20 ### END INIT INFO
21
22 # Source function library.
23 . /etc/init.d/functions
24
25 exec=/usr/sbin/mpssd
26 sysfs="/sys/class/mic"
27 mic_modules="mic_host mic_x100_dma scif vop"
28
29 start()
30 {
31         [ -x $exec ] || exit 5
32
33         if [ "`ps -e | awk '{print $4}' | grep mpssd | head -1`" = "mpssd" ]; then
34                 echo -e $"MPSSD already running! "
35                 success
36                 echo
37                 return 0
38         fi
39
40         echo -e $"Starting MPSS Stack"
41         echo -e $"Loading MIC drivers:" $mic_modules
42
43         modprobe -a $mic_modules
44         RETVAL=$?
45         if [ $RETVAL -ne 0 ]; then
46                 failure
47                 echo
48                 return $RETVAL
49         fi
50
51         # Start the daemon
52         echo -n $"Starting MPSSD "
53         $exec
54         RETVAL=$?
55         if [ $RETVAL -ne 0 ]; then
56                 failure
57                 echo
58                 return $RETVAL
59         fi
60         success
61         echo
62
63         sleep 5
64
65         # Boot the cards
66         micctrl -b
67
68         # Wait till ping works
69         for f in $sysfs/*
70         do
71                 count=100
72                 ipaddr=`cat $f/cmdline`
73                 ipaddr=${ipaddr#*address,}
74                 ipaddr=`echo $ipaddr | cut -d, -f1 | cut -d\; -f1`
75                 while [ $count -ge 0 ]
76                 do
77                         echo -e "Pinging "`basename $f`" "
78                         ping -c 1 $ipaddr &> /dev/null
79                         RETVAL=$?
80                         if [ $RETVAL -eq 0 ]; then
81                                 success
82                                 break
83                         fi
84                         sleep 1
85                         count=`expr $count - 1`
86                 done
87                 [ $RETVAL -ne 0 ] && failure || success
88                 echo
89         done
90         return $RETVAL
91 }
92
93 stop()
94 {
95         echo -e $"Shutting down MPSS Stack: "
96
97         # Bail out if module is unloaded
98         if [ ! -d "$sysfs" ]; then
99                 echo -n $"Module unloaded "
100                 success
101                 echo
102                 return 0
103         fi
104
105         # Shut down the cards.
106         micctrl -S
107
108         # Wait for the cards to go offline
109         for f in $sysfs/*
110         do
111                 while [ "`cat $f/state`" != "ready" ]
112                 do
113                         sleep 1
114                         echo -e "Waiting for "`basename $f`" to become ready"
115                 done
116         done
117
118         # Display the status of the cards
119         micctrl -s
120
121         # Kill MPSSD now
122         echo -n $"Killing MPSSD"
123         killall -9 mpssd 2>/dev/null
124         RETVAL=$?
125         [ $RETVAL -ne 0 ] && failure || success
126         echo
127         return $RETVAL
128 }
129
130 restart()
131 {
132         stop
133         sleep 5
134         start
135 }
136
137 status()
138 {
139         micctrl -s
140         if [ "`ps -e | awk '{print $4}' | grep mpssd | head -n 1`" = "mpssd" ]; then
141                 echo "mpssd is running"
142         else
143                 echo "mpssd is stopped"
144         fi
145         return 0
146 }
147
148 unload()
149 {
150         if [ ! -d "$sysfs" ]; then
151                 echo -n $"No MIC_HOST Module: "
152                 success
153                 echo
154                 return
155         fi
156
157         stop
158
159         sleep 5
160         echo -n $"Removing MIC drivers:" $mic_modules
161         modprobe -r $mic_modules
162         RETVAL=$?
163         [ $RETVAL -ne 0 ] && failure || success
164         echo
165         return $RETVAL
166 }
167
168 case $1 in
169         start)
170                 start
171                 ;;
172         stop)
173                 stop
174                 ;;
175         restart)
176                 restart
177                 ;;
178         status)
179                 status
180                 ;;
181         unload)
182                 unload
183                 ;;
184         *)
185                 echo $"Usage: $0 {start|stop|restart|status|unload}"
186                 exit 2
187 esac
188
189 exit $?