mirror of https://gitee.com/openkylin/linux.git
163 lines
2.2 KiB
Bash
Executable File
163 lines
2.2 KiB
Bash
Executable File
#!/bin/bash
|
|
# SPDX-License-Identifier: GPL-2.0-only
|
|
# Intel MIC Platform Software Stack (MPSS)
|
|
#
|
|
# Copyright(c) 2013 Intel Corporation.
|
|
#
|
|
# 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 $?
|