203 lines
3.3 KiB
Text
203 lines
3.3 KiB
Text
|
#!/bin/bash
|
||
|
# Intel MIC Platform Software Stack (MPSS)
|
||
|
#
|
||
|
# Copyright(c) 2013 Intel Corporation.
|
||
|
#
|
||
|
# This program is free software; you can redistribute it and/or modify
|
||
|
# it under the terms of the GNU General Public License, version 2, as
|
||
|
# published by the Free Software Foundation.
|
||
|
#
|
||
|
# This program is distributed in the hope that it will be useful, but
|
||
|
# WITHOUT ANY WARRANTY; without even the implied warranty of
|
||
|
# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
|
||
|
# General Public License for more details.
|
||
|
#
|
||
|
# The full GNU General Public License is included in this distribution in
|
||
|
# the file called "COPYING".
|
||
|
#
|
||
|
# Intel MIC User Space Tools.
|
||
|
#
|
||
|
# mpss Start mpssd.
|
||
|
#
|
||
|
# chkconfig: 2345 95 05
|
||
|
# description: start MPSS stack processing.
|
||
|
#
|
||
|
### BEGIN INIT INFO
|
||
|
# Provides: mpss
|
||
|
# Required-Start:
|
||
|
# Required-Stop:
|
||
|
# Short-Description: MPSS stack control
|
||
|
# Description: MPSS stack control
|
||
|
### END INIT INFO
|
||
|
|
||
|
# Source function library.
|
||
|
. /etc/init.d/functions
|
||
|
|
||
|
exec=/usr/sbin/mpssd
|
||
|
sysfs="/sys/class/mic"
|
||
|
|
||
|
start()
|
||
|
{
|
||
|
[ -x $exec ] || exit 5
|
||
|
|
||
|
if [ "`ps -e | awk '{print $4}' | grep mpssd | head -1`" = "mpssd" ]; then
|
||
|
echo -e $"MPSSD already running! "
|
||
|
success
|
||
|
echo
|
||
|
return 0
|
||
|
fi
|
||
|
|
||
|
echo -e $"Starting MPSS Stack"
|
||
|
echo -e $"Loading MIC_HOST Module"
|
||
|
|
||
|
# Ensure the driver is loaded
|
||
|
if [ ! -d "$sysfs" ]; then
|
||
|
modprobe mic_host
|
||
|
RETVAL=$?
|
||
|
if [ $RETVAL -ne 0 ]; then
|
||
|
failure
|
||
|
echo
|
||
|
return $RETVAL
|
||
|
fi
|
||
|
fi
|
||
|
|
||
|
# Start the daemon
|
||
|
echo -n $"Starting MPSSD "
|
||
|
$exec
|
||
|
RETVAL=$?
|
||
|
if [ $RETVAL -ne 0 ]; then
|
||
|
failure
|
||
|
echo
|
||
|
return $RETVAL
|
||
|
fi
|
||
|
success
|
||
|
echo
|
||
|
|
||
|
sleep 5
|
||
|
|
||
|
# Boot the cards
|
||
|
micctrl -b
|
||
|
|
||
|
# Wait till ping works
|
||
|
for f in $sysfs/*
|
||
|
do
|
||
|
count=100
|
||
|
ipaddr=`cat $f/cmdline`
|
||
|
ipaddr=${ipaddr#*address,}
|
||
|
ipaddr=`echo $ipaddr | cut -d, -f1 | cut -d\; -f1`
|
||
|
while [ $count -ge 0 ]
|
||
|
do
|
||
|
echo -e "Pinging "`basename $f`" "
|
||
|
ping -c 1 $ipaddr &> /dev/null
|
||
|
RETVAL=$?
|
||
|
if [ $RETVAL -eq 0 ]; then
|
||
|
success
|
||
|
break
|
||
|
fi
|
||
|
sleep 1
|
||
|
count=`expr $count - 1`
|
||
|
done
|
||
|
[ $RETVAL -ne 0 ] && failure || success
|
||
|
echo
|
||
|
done
|
||
|
return $RETVAL
|
||
|
}
|
||
|
|
||
|
stop()
|
||
|
{
|
||
|
echo -e $"Shutting down MPSS Stack: "
|
||
|
|
||
|
# Bail out if module is unloaded
|
||
|
if [ ! -d "$sysfs" ]; then
|
||
|
echo -n $"Module unloaded "
|
||
|
success
|
||
|
echo
|
||
|
return 0
|
||
|
fi
|
||
|
|
||
|
# Shut down the cards.
|
||
|
micctrl -S
|
||
|
|
||
|
# Wait for the cards to go offline
|
||
|
for f in $sysfs/*
|
||
|
do
|
||
|
while [ "`cat $f/state`" != "offline" ]
|
||
|
do
|
||
|
sleep 1
|
||
|
echo -e "Waiting for "`basename $f`" to go offline"
|
||
|
done
|
||
|
done
|
||
|
|
||
|
# Display the status of the cards
|
||
|
micctrl -s
|
||
|
|
||
|
# Kill MPSSD now
|
||
|
echo -n $"Killing MPSSD"
|
||
|
killall -9 mpssd 2>/dev/null
|
||
|
RETVAL=$?
|
||
|
[ $RETVAL -ne 0 ] && failure || success
|
||
|
echo
|
||
|
return $RETVAL
|
||
|
}
|
||
|
|
||
|
restart()
|
||
|
{
|
||
|
stop
|
||
|
sleep 5
|
||
|
start
|
||
|
}
|
||
|
|
||
|
status()
|
||
|
{
|
||
|
micctrl -s
|
||
|
if [ "`ps -e | awk '{print $4}' | grep mpssd | head -n 1`" = "mpssd" ]; then
|
||
|
echo "mpssd is running"
|
||
|
else
|
||
|
echo "mpssd is stopped"
|
||
|
fi
|
||
|
return 0
|
||
|
}
|
||
|
|
||
|
unload()
|
||
|
{
|
||
|
if [ ! -d "$sysfs" ]; then
|
||
|
echo -n $"No MIC_HOST Module: "
|
||
|
success
|
||
|
echo
|
||
|
return
|
||
|
fi
|
||
|
|
||
|
stop
|
||
|
|
||
|
sleep 5
|
||
|
echo -n $"Removing MIC_HOST Module: "
|
||
|
modprobe -r mic_host
|
||
|
RETVAL=$?
|
||
|
[ $RETVAL -ne 0 ] && failure || success
|
||
|
echo
|
||
|
return $RETVAL
|
||
|
}
|
||
|
|
||
|
case $1 in
|
||
|
start)
|
||
|
start
|
||
|
;;
|
||
|
stop)
|
||
|
stop
|
||
|
;;
|
||
|
restart)
|
||
|
restart
|
||
|
;;
|
||
|
status)
|
||
|
status
|
||
|
;;
|
||
|
unload)
|
||
|
unload
|
||
|
;;
|
||
|
*)
|
||
|
echo $"Usage: $0 {start|stop|restart|status|unload}"
|
||
|
exit 2
|
||
|
esac
|
||
|
|
||
|
exit $?
|