174 lines
		
	
	
	
		
			2.7 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
		
		
			
		
	
	
			174 lines
		
	
	
	
		
			2.7 KiB
			
		
	
	
	
		
			Text
		
	
	
	
	
	
|   | #!/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 $? |