201 lines
		
	
	
		
			3.3 KiB
		
	
	
	
		
			Bash
		
	
	
		
			Executable File
		
	
	
	
	
			
		
		
	
	
			201 lines
		
	
	
		
			3.3 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.
 | |
| #
 | |
| # 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 $?
 |