blob: 582aad4811ae802844ebeb37d51cc9a1ffec68a8 [file] [log] [blame]
Caz Yokoyama8d497512013-09-05 16:42:39 -07001#!/bin/bash
2# Intel MIC Platform Software Stack (MPSS)
3#
4# Copyright(c) 2013 Intel Corporation.
5#
6# This program is free software; you can redistribute it and/or modify
7# it under the terms of the GNU General Public License, version 2, as
8# published by the Free Software Foundation.
9#
10# This program is distributed in the hope that it will be useful, but
11# WITHOUT ANY WARRANTY; without even the implied warranty of
12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
13# General Public License for more details.
14#
15# The full GNU General Public License is included in this distribution in
16# the file called "COPYING".
17#
18# Intel MIC User Space Tools.
19#
20# mpss Start mpssd.
21#
22# chkconfig: 2345 95 05
23# description: start MPSS stack processing.
24#
25### BEGIN INIT INFO
26# Provides: mpss
27# Required-Start:
28# Required-Stop:
29# Short-Description: MPSS stack control
30# Description: MPSS stack control
31### END INIT INFO
32
33# Source function library.
34. /etc/init.d/functions
35
36exec=/usr/sbin/mpssd
37sysfs="/sys/class/mic"
Sudeep Duttf5c48142015-04-29 05:32:40 -070038mic_modules="mic_host mic_x100_dma scif"
Caz Yokoyama8d497512013-09-05 16:42:39 -070039
40start()
41{
42 [ -x $exec ] || exit 5
43
44 if [ "`ps -e | awk '{print $4}' | grep mpssd | head -1`" = "mpssd" ]; then
45 echo -e $"MPSSD already running! "
46 success
47 echo
48 return 0
49 fi
50
51 echo -e $"Starting MPSS Stack"
Sudeep Duttf5c48142015-04-29 05:32:40 -070052 echo -e $"Loading MIC drivers:" $mic_modules
Caz Yokoyama8d497512013-09-05 16:42:39 -070053
Sudeep Duttf5c48142015-04-29 05:32:40 -070054 modprobe -a $mic_modules
55 RETVAL=$?
56 if [ $RETVAL -ne 0 ]; then
57 failure
58 echo
59 return $RETVAL
60 fi
Caz Yokoyama8d497512013-09-05 16:42:39 -070061
62 # Start the daemon
63 echo -n $"Starting MPSSD "
64 $exec
65 RETVAL=$?
66 if [ $RETVAL -ne 0 ]; then
67 failure
68 echo
69 return $RETVAL
70 fi
71 success
72 echo
73
74 sleep 5
75
76 # Boot the cards
77 micctrl -b
78
79 # Wait till ping works
80 for f in $sysfs/*
81 do
82 count=100
83 ipaddr=`cat $f/cmdline`
84 ipaddr=${ipaddr#*address,}
85 ipaddr=`echo $ipaddr | cut -d, -f1 | cut -d\; -f1`
86 while [ $count -ge 0 ]
87 do
88 echo -e "Pinging "`basename $f`" "
89 ping -c 1 $ipaddr &> /dev/null
90 RETVAL=$?
91 if [ $RETVAL -eq 0 ]; then
92 success
93 break
94 fi
95 sleep 1
96 count=`expr $count - 1`
97 done
98 [ $RETVAL -ne 0 ] && failure || success
99 echo
100 done
101 return $RETVAL
102}
103
104stop()
105{
106 echo -e $"Shutting down MPSS Stack: "
107
108 # Bail out if module is unloaded
109 if [ ! -d "$sysfs" ]; then
110 echo -n $"Module unloaded "
111 success
112 echo
113 return 0
114 fi
115
116 # Shut down the cards.
117 micctrl -S
118
119 # Wait for the cards to go offline
120 for f in $sysfs/*
121 do
122 while [ "`cat $f/state`" != "offline" ]
123 do
124 sleep 1
125 echo -e "Waiting for "`basename $f`" to go offline"
126 done
127 done
128
129 # Display the status of the cards
130 micctrl -s
131
132 # Kill MPSSD now
133 echo -n $"Killing MPSSD"
134 killall -9 mpssd 2>/dev/null
135 RETVAL=$?
136 [ $RETVAL -ne 0 ] && failure || success
137 echo
138 return $RETVAL
139}
140
141restart()
142{
143 stop
144 sleep 5
145 start
146}
147
148status()
149{
150 micctrl -s
151 if [ "`ps -e | awk '{print $4}' | grep mpssd | head -n 1`" = "mpssd" ]; then
152 echo "mpssd is running"
153 else
154 echo "mpssd is stopped"
155 fi
156 return 0
157}
158
159unload()
160{
161 if [ ! -d "$sysfs" ]; then
162 echo -n $"No MIC_HOST Module: "
163 success
164 echo
165 return
166 fi
167
168 stop
169
170 sleep 5
Sudeep Duttf5c48142015-04-29 05:32:40 -0700171 echo -n $"Removing MIC drivers:" $mic_modules
172 modprobe -r $mic_modules
Caz Yokoyama8d497512013-09-05 16:42:39 -0700173 RETVAL=$?
174 [ $RETVAL -ne 0 ] && failure || success
175 echo
176 return $RETVAL
177}
178
179case $1 in
180 start)
181 start
182 ;;
183 stop)
184 stop
185 ;;
186 restart)
187 restart
188 ;;
189 status)
190 status
191 ;;
192 unload)
193 unload
194 ;;
195 *)
196 echo $"Usage: $0 {start|stop|restart|status|unload}"
197 exit 2
198esac
199
200exit $?