mirror of
https://github.com/AuxXxilium/linux_dsm_epyc7002.git
synced 2024-12-25 15:27:36 +07:00
174 lines
2.7 KiB
Plaintext
174 lines
2.7 KiB
Plaintext
|
#!/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 $?
|