8d49751580
This patch introduces a sample user space daemon which implements the virtio device backends on the host. The daemon creates/removes/configures virtio device backends by communicating with the Intel MIC Host Driver. The virtio devices currently supported are virtio net, virtio console and virtio block. Virtio net supports TSO/GSO. The daemon also monitors card shutdown status and takes appropriate actions like killing the virtio backends and resetting the card upon card shutdown and crashes. Co-author: Ashutosh Dixit <ashutosh.dixit@intel.com> Co-author: Sudeep Dutt <sudeep.dutt@intel.com> Signed-off-by: Ashutosh Dixit <ashutosh.dixit@intel.com> Signed-off-by: Caz Yokoyama <Caz.Yokoyama@intel.com> Signed-off-by: Dasaratharaman Chandramouli <dasaratharaman.chandramouli@intel.com> Signed-off-by: Nikhil Rao <nikhil.rao@intel.com> Signed-off-by: Harshavardhan R Kharche <harshavardhan.r.kharche@intel.com> Signed-off-by: Sudeep Dutt <sudeep.dutt@intel.com> Acked-by: Yaozu (Eddie) Dong <eddie.dong@intel.com> Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
174 lines
2.7 KiB
Bash
Executable File
174 lines
2.7 KiB
Bash
Executable File
#!/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 $?
|