You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
173 lines
2.7 KiB
173 lines
2.7 KiB
#!/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. |
|
# |
|
# micctrl - Controls MIC boot/start/stop. |
|
# |
|
# chkconfig: 2345 95 05 |
|
# description: start MPSS stack processing. |
|
# |
|
### BEGIN INIT INFO |
|
# Provides: micctrl |
|
### END INIT INFO |
|
|
|
# Source function library. |
|
. /etc/init.d/functions |
|
|
|
sysfs="/sys/class/mic" |
|
|
|
_status() |
|
{ |
|
f=$sysfs/$1 |
|
echo -e $1 state: "`cat $f/state`" shutdown_status: "`cat $f/shutdown_status`" |
|
} |
|
|
|
status() |
|
{ |
|
if [ "`echo $1 | head -c3`" == "mic" ]; then |
|
_status $1 |
|
return $? |
|
fi |
|
for f in $sysfs/* |
|
do |
|
_status `basename $f` |
|
RETVAL=$? |
|
[ $RETVAL -ne 0 ] && return $RETVAL |
|
done |
|
return 0 |
|
} |
|
|
|
_reset() |
|
{ |
|
f=$sysfs/$1 |
|
echo reset > $f/state |
|
} |
|
|
|
reset() |
|
{ |
|
if [ "`echo $1 | head -c3`" == "mic" ]; then |
|
_reset $1 |
|
return $? |
|
fi |
|
for f in $sysfs/* |
|
do |
|
_reset `basename $f` |
|
RETVAL=$? |
|
[ $RETVAL -ne 0 ] && return $RETVAL |
|
done |
|
return 0 |
|
} |
|
|
|
_boot() |
|
{ |
|
f=$sysfs/$1 |
|
echo "linux" > $f/bootmode |
|
echo "mic/uos.img" > $f/firmware |
|
echo "mic/$1.image" > $f/ramdisk |
|
echo "boot" > $f/state |
|
} |
|
|
|
boot() |
|
{ |
|
if [ "`echo $1 | head -c3`" == "mic" ]; then |
|
_boot $1 |
|
return $? |
|
fi |
|
for f in $sysfs/* |
|
do |
|
_boot `basename $f` |
|
RETVAL=$? |
|
[ $RETVAL -ne 0 ] && return $RETVAL |
|
done |
|
return 0 |
|
} |
|
|
|
_shutdown() |
|
{ |
|
f=$sysfs/$1 |
|
echo shutdown > $f/state |
|
} |
|
|
|
shutdown() |
|
{ |
|
if [ "`echo $1 | head -c3`" == "mic" ]; then |
|
_shutdown $1 |
|
return $? |
|
fi |
|
for f in $sysfs/* |
|
do |
|
_shutdown `basename $f` |
|
RETVAL=$? |
|
[ $RETVAL -ne 0 ] && return $RETVAL |
|
done |
|
return 0 |
|
} |
|
|
|
_wait() |
|
{ |
|
f=$sysfs/$1 |
|
while [ "`cat $f/state`" != "offline" -a "`cat $f/state`" != "online" ] |
|
do |
|
sleep 1 |
|
echo -e "Waiting for $1 to go offline" |
|
done |
|
} |
|
|
|
wait() |
|
{ |
|
if [ "`echo $1 | head -c3`" == "mic" ]; then |
|
_wait $1 |
|
return $? |
|
fi |
|
# Wait for the cards to go offline |
|
for f in $sysfs/* |
|
do |
|
_wait `basename $f` |
|
RETVAL=$? |
|
[ $RETVAL -ne 0 ] && return $RETVAL |
|
done |
|
return 0 |
|
} |
|
|
|
if [ ! -d "$sysfs" ]; then |
|
echo -e $"Module unloaded " |
|
exit 3 |
|
fi |
|
|
|
case $1 in |
|
-s) |
|
status $2 |
|
;; |
|
-r) |
|
reset $2 |
|
;; |
|
-b) |
|
boot $2 |
|
;; |
|
-S) |
|
shutdown $2 |
|
;; |
|
-w) |
|
wait $2 |
|
;; |
|
*) |
|
echo $"Usage: $0 {-s (status) |-r (reset) |-b (boot) |-S (shutdown) |-w (wait)}" |
|
exit 2 |
|
esac |
|
|
|
exit $?
|
|
|