1#!/bin/bash 2# Intel MIC Platform Software Stack (MPSS) 3# 4# Copyright(c) 2013 Intel Corporation. 5# 6# This program is free software; you can redistribute it and/or modify 7# it under the terms of the GNU General Public License, version 2, as 8# published by the Free Software Foundation. 9# 10# This program is distributed in the hope that it will be useful, but 11# WITHOUT ANY WARRANTY; without even the implied warranty of 12# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU 13# General Public License for more details. 14# 15# The full GNU General Public License is included in this distribution in 16# the file called "COPYING". 17# 18# Intel MIC User Space Tools. 19# 20# mpss Start mpssd. 21# 22# chkconfig: 2345 95 05 23# description: start MPSS stack processing. 24# 25### BEGIN INIT INFO 26# Provides: mpss 27# Required-Start: 28# Required-Stop: 29# Short-Description: MPSS stack control 30# Description: MPSS stack control 31### END INIT INFO 32 33# Source function library. 34. /etc/init.d/functions 35 36exec=/usr/sbin/mpssd 37sysfs="/sys/class/mic" 38mic_modules="mic_host mic_x100_dma scif" 39 40start() 41{ 42 [ -x $exec ] || exit 5 43 44 if [ "`ps -e | awk '{print $4}' | grep mpssd | head -1`" = "mpssd" ]; then 45 echo -e $"MPSSD already running! " 46 success 47 echo 48 return 0 49 fi 50 51 echo -e $"Starting MPSS Stack" 52 echo -e $"Loading MIC drivers:" $mic_modules 53 54 modprobe -a $mic_modules 55 RETVAL=$? 56 if [ $RETVAL -ne 0 ]; then 57 failure 58 echo 59 return $RETVAL 60 fi 61 62 # Start the daemon 63 echo -n $"Starting MPSSD " 64 $exec 65 RETVAL=$? 66 if [ $RETVAL -ne 0 ]; then 67 failure 68 echo 69 return $RETVAL 70 fi 71 success 72 echo 73 74 sleep 5 75 76 # Boot the cards 77 micctrl -b 78 79 # Wait till ping works 80 for f in $sysfs/* 81 do 82 count=100 83 ipaddr=`cat $f/cmdline` 84 ipaddr=${ipaddr#*address,} 85 ipaddr=`echo $ipaddr | cut -d, -f1 | cut -d\; -f1` 86 while [ $count -ge 0 ] 87 do 88 echo -e "Pinging "`basename $f`" " 89 ping -c 1 $ipaddr &> /dev/null 90 RETVAL=$? 91 if [ $RETVAL -eq 0 ]; then 92 success 93 break 94 fi 95 sleep 1 96 count=`expr $count - 1` 97 done 98 [ $RETVAL -ne 0 ] && failure || success 99 echo 100 done 101 return $RETVAL 102} 103 104stop() 105{ 106 echo -e $"Shutting down MPSS Stack: " 107 108 # Bail out if module is unloaded 109 if [ ! -d "$sysfs" ]; then 110 echo -n $"Module unloaded " 111 success 112 echo 113 return 0 114 fi 115 116 # Shut down the cards. 117 micctrl -S 118 119 # Wait for the cards to go offline 120 for f in $sysfs/* 121 do 122 while [ "`cat $f/state`" != "ready" ] 123 do 124 sleep 1 125 echo -e "Waiting for "`basename $f`" to become ready" 126 done 127 done 128 129 # Display the status of the cards 130 micctrl -s 131 132 # Kill MPSSD now 133 echo -n $"Killing MPSSD" 134 killall -9 mpssd 2>/dev/null 135 RETVAL=$? 136 [ $RETVAL -ne 0 ] && failure || success 137 echo 138 return $RETVAL 139} 140 141restart() 142{ 143 stop 144 sleep 5 145 start 146} 147 148status() 149{ 150 micctrl -s 151 if [ "`ps -e | awk '{print $4}' | grep mpssd | head -n 1`" = "mpssd" ]; then 152 echo "mpssd is running" 153 else 154 echo "mpssd is stopped" 155 fi 156 return 0 157} 158 159unload() 160{ 161 if [ ! -d "$sysfs" ]; then 162 echo -n $"No MIC_HOST Module: " 163 success 164 echo 165 return 166 fi 167 168 stop 169 170 sleep 5 171 echo -n $"Removing MIC drivers:" $mic_modules 172 modprobe -r $mic_modules 173 RETVAL=$? 174 [ $RETVAL -ne 0 ] && failure || success 175 echo 176 return $RETVAL 177} 178 179case $1 in 180 start) 181 start 182 ;; 183 stop) 184 stop 185 ;; 186 restart) 187 restart 188 ;; 189 status) 190 status 191 ;; 192 unload) 193 unload 194 ;; 195 *) 196 echo $"Usage: $0 {start|stop|restart|status|unload}" 197 exit 2 198esac 199 200exit $? 201