| #!/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. | |
| # | |
| # 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" | |
| mic_modules="mic_host mic_x100_dma scif vop" | |
| 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 drivers:" $mic_modules | |
| modprobe -a $mic_modules | |
| RETVAL=$? | |
| if [ $RETVAL -ne 0 ]; then | |
| failure | |
| echo | |
| return $RETVAL | |
| 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`" != "ready" ] | |
| do | |
| sleep 1 | |
| echo -e "Waiting for "`basename $f`" to become ready" | |
| 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 drivers:" $mic_modules | |
| modprobe -r $mic_modules | |
| 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 $? |