#!/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 $?