diff options
Diffstat (limited to 'sys-infiniband/openib-files/files')
-rw-r--r-- | sys-infiniband/openib-files/files/90-ib.rules | 5 | ||||
-rw-r--r-- | sys-infiniband/openib-files/files/openib | 243 | ||||
-rw-r--r-- | sys-infiniband/openib-files/files/openib.conf | 27 | ||||
-rw-r--r-- | sys-infiniband/openib-files/files/openib.env | 1 | ||||
-rw-r--r-- | sys-infiniband/openib-files/files/openib.modprobe | 12 |
5 files changed, 288 insertions, 0 deletions
diff --git a/sys-infiniband/openib-files/files/90-ib.rules b/sys-infiniband/openib-files/files/90-ib.rules new file mode 100644 index 0000000..7896684 --- /dev/null +++ b/sys-infiniband/openib-files/files/90-ib.rules @@ -0,0 +1,5 @@ +KERNEL=="umad*", NAME="infiniband/%k" +KERNEL=="issm*", NAME="infiniband/%k" +KERNEL=="uverbs*", NAME="infiniband/%k", MODE="0666" +KERNEL=="ucm*", NAME="infiniband/%k", MODE="0666" +KERNEL=="rdma_cm", NAME="infiniband/%k", MODE="0666" diff --git a/sys-infiniband/openib-files/files/openib b/sys-infiniband/openib-files/files/openib new file mode 100644 index 0000000..b654831 --- /dev/null +++ b/sys-infiniband/openib-files/files/openib @@ -0,0 +1,243 @@ +#!/sbin/runscript +# Copyright 1999-2011 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-infiniband/openib-files/files/openib,v 1.1 2011/06/30 22:02:03 alexxy Exp $ + +# Based on openibd script from openfabrics.org, +# Copyright (c) 2006 Mellanox Technologies. All rights reserved. +# Distributed under the terms of the GNU General Public License v2 + +depend() { + after hotplug + before net # init openib before starting any ipoib interfaces +} + +OPENIB_CONFDIR=${OPENIB_CONFDIR:-/etc/infiniband} + +if [[ -r ${OPENIB_CONFDIR}/openib.conf ]] ; then + . ${OPENIB_CONFDIR}/openib.conf +fi + +# Setting OpenIB start parameters +POST_LOAD_MODULES="" + +if [ "X${SDP_LOAD}" == "Xyes" ]; then + POST_LOAD_MODULES="$POST_LOAD_MODULES ib_sdp" + IPOIB_LOAD="yes" +fi + +IPOIB=0 +if [ "X${IPOIB_LOAD}" == "Xyes" ]; then + IPOIB=1 +fi + +if [ "X${SRP_LOAD}" == "Xyes" ]; then + POST_LOAD_MODULES="$POST_LOAD_MODULES ib_srp" +fi + +if [ "X${SRP_TARGET_LOAD}" == "Xyes" ]; then + POST_LOAD_MODULES="$POST_LOAD_MODULES ib_srp_target" +fi + +if [ "X${RDMA_CM_LOAD}" == "Xyes" ]; then + POST_LOAD_MODULES="$POST_LOAD_MODULES rdma_cm" +fi + +if [ "X${UCM_LOAD}" == "Xyes" ]; then + POST_LOAD_MODULES="$POST_LOAD_MODULES ib_ucm" +fi + +if [ "X${RDS_LOAD}" == "Xyes" ]; then + POST_LOAD_MODULES="$POST_LOAD_MODULES ib_rds" +fi + +if [ "X${ISER_LOAD}" == "Xyes" ]; then + POST_LOAD_MODULES="$POST_LOAD_MODULES ib_iser" +fi + +if [ "X${RDMA_UCM_LOAD}" == "Xyes" ]; then + POST_LOAD_MODULES="$POST_LOAD_MODULES rdma_ucm" +fi + +PRE_UNLOAD_MODULES="ib_rds ib_ucm kdapl ib_srp_target scsi_target ib_srp ib_iser ib_sdp rdma_ucm rdma_cm ib_addr ib_cm ib_local_sa findex" + +# W/A for unloading modules +POST_UNLOAD_MODULES="$PRE_UNLOAD_MODULES ib_ipoib ib_sa ib_uverbs ib_umad" +# ib_mthca ib_ipath - don't unload unless they are in openib.conf +[[ "${MTHCA_LOAD}" == "yes" ]] && \ + POST_UNLOAD_MODULES="$POST_UNLOAD_MODULES ib_mthca" +[[ "${IPATH_LOAD}" == "yes" ]] && \ + POST_UNLOAD_MODULES="$POST_UNLOAD_MODULES ib_ipath ipath_core" + +[[ "${MTHCA_LOAD}" == "yes" || "${IPATH_LOAD}" == "yes" ]] && \ + POST_UNLOAD_MODULES="$POST_UNLOAD_MODULES ib_mad ib_core" + +#STATUS_MODULES="rdma_ucm ib_rds ib_srp ib_sdp rdma_cm ib_addr ib_local_sa findex ib_ipoib ib_ipath ipath_core ib_mthca ib_uverbs ib_umad ib_ucm ib_sa ib_cm ib_mad ib_core" + + +# If module $1 is loaded return - 0 else - 1 +is_module() +{ + local RC + + /bin/lsmod | grep -w "$1" > /dev/null 2>&1 + RC=$? + + return $RC +} + +unload() +{ + # Unload module $1 + if is_module $mod; then + /sbin/modprobe -r $mod > /dev/null 2>&1 + if [ $? -ne 0 ]; then + # Try rmmod if modprobe failed: case that previous installation included more IB modules. + /sbin/rmmod $mod > /dev/null 2>&1 + if [ $? -ne 0 ]; then + ewarn "Failed to unload $mod" + return 1 + fi + fi + fi +} + +start() { + local RC=0 + ebegin "Initializing Infiniband" + eindent + + # Load Mellanox HCA driver if explicitly requested + # (however, it should be loaded automatically by udev) + + einfo "Loading HCA and Access Layer drivers" + + if [[ "${MTHCA_LOAD}" == "yes" ]]; then + /sbin/modprobe ib_mthca > /dev/null 2>&1 + RC=$[ $RC + $? ] + fi + if [[ "${IPATH_LOAD}" == "yes" ]]; then + /sbin/modprobe ib_ipath > /dev/null 2>&1 + RC=$[ $RC + $? ] + fi + + # Add node description to sysfs + IBSYSDIR="/sys/class/infiniband" + if [ -d ${IBSYSDIR} ]; then + declare -i hca_id=1 + for hca in ${IBSYSDIR}/*; do + if [ -e ${hca}/node_desc ]; then + echo -n "$(hostname -s) HCA-${hca_id}" >> ${hca}/node_desc + fi + let hca_id++ + done + fi + /sbin/modprobe ib_umad > /dev/null 2>&1 + RC=$[ $RC + $? ] + /sbin/modprobe ib_uverbs > /dev/null 2>&1 + RC=$[ $RC + $? ] + + if [ $IPOIB -eq 1 ]; then + # this section is not necessary if all ib-over-ib devices are + # aliased properly in /etc/modules.d/openib + einfo "loading ib_ipoib module" + /sbin/modprobe ib_ipoib > /dev/null 2>&1 + RC=$[ $RC + $? ] + if (( ! RC )); then + # start the ipoib devices automatically... + # this is probably a bad idea (the concept is taken from the + # original SUSE/Redhat-based initscript), and should be removed. + # But it works, and is not enabled by default. So I leave it here + # for second opinions. + local ibdevs=`rc-status -u -nc |egrep 'net\.ib[0-9a-zA-Z]+.*stopped' | awk '{print $1}'` + if [ -n "$ibdevs" ] ; then + einfo "starting ipoib devices" + for ibdev in $ibdevs; do + /etc/init.d/$ibdev start + done + fi + fi + fi + + # Devices for ib_umad and ib_uverbs should now have been created. + if [ ! -d /dev/infiniband/ ]; then + eerror "udev failed to create '/dev/infiniband/' devices" + RC=1 + fi + + # Load configured modules + if [ "$POST_LOAD_MODULES" != "" ]; then + for mod in $POST_LOAD_MODULES + do + case $mod in + ib_iser) + # Voltaire requirement + /sbin/modprobe --force-modversion $mod > /dev/null 2>&1 + ;; + *) + /sbin/modprobe $mod > /dev/null 2>&1 + ;; + esac + RC=$? + [ $RC -ne 0 ] && eerror "Failed to load $mod" + done + fi + + eoutdent + eend $RC +} + +stop() { + ebegin "Stopping Infiniband" + local RC=0 + + # Check if applications which use infiniband are running + local apps="opensm osmtest ibbs ibns" + local pid + + for app in $apps + do + if ( ps -ef | grep $app | grep -v grep > /dev/null 2>&1 ); then + eerror "Please stop $app and all applications running over InfiniBand" + eend 1 + return + fi + done + + if ! is_module ib_core; then + einfo "HCA driver is not loaded" + eend 0 + return + fi + + # Unload ULPs modules + + if [ "$PRE_UNLOAD_MODULES" != "" ]; then + for mod in $PRE_UNLOAD_MODULES + do + unload $mod || { eend 1; return; } + done + fi + + # Remove srp_presistant_bind.sh before removing ib_srp module + PID_SCRPT_TO_KILL=`ps -efww | grep srp_persistent | grep -v grep | awk '{print $2}'` + if ! [ "$PID_SCRPT_TO_KILL" == "" ]; then + PID_SLEEP_TO_KILL=`ps -efww | grep $PID_SCRPT_TO_KILL | grep sleep | awk '{print $2}'` + kill -9 $PID_SCRPT_TO_KILL + fi + if ! [ "$PID_SLEEP_TO_KILL" == "" ]; then + kill -9 $PID_SLEEP_TO_KILL + fi + + # Unload OpenIB modules + + if [ "$POST_UNLOAD_MODULES" != "" ]; then + for mod in $POST_UNLOAD_MODULES + do + unload $mod || RC=1 + done + fi + + eend $RC +} + diff --git a/sys-infiniband/openib-files/files/openib.conf b/sys-infiniband/openib-files/files/openib.conf new file mode 100644 index 0000000..9b4eb29 --- /dev/null +++ b/sys-infiniband/openib-files/files/openib.conf @@ -0,0 +1,27 @@ +# uncomment to load ib_ipoib module +#IPOIB_LOAD=yes + +# uncomment to load ib_sdp module (implies IPOIB_LOAD=yes) +#SDP_LOAD=yes + +# uncomment to load ib_srp module +#SRP_LOAD=yes + +# uncomment to load ib_srp_target module +#SRP_TARGET_LOAD=yes + +# uncomment to load rdma_cm module +#RDMA_CM_LOAD=yes + +# uncomment to load ib_ucm module +#UCM_LOAD=yes + +# uncomment to load ib_rds module +#RDS_LOAD=yes + +# uncomment to load ib_iser module +#ISER_LOAD=yes + +# uncomment to load rdma_ucm module +#RDMA_UCM_LOAD=yes + diff --git a/sys-infiniband/openib-files/files/openib.env b/sys-infiniband/openib-files/files/openib.env new file mode 100644 index 0000000..2e34cf2 --- /dev/null +++ b/sys-infiniband/openib-files/files/openib.env @@ -0,0 +1 @@ +IBPATH="/usr/sbin" diff --git a/sys-infiniband/openib-files/files/openib.modprobe b/sys-infiniband/openib-files/files/openib.modprobe new file mode 100644 index 0000000..52828fb --- /dev/null +++ b/sys-infiniband/openib-files/files/openib.modprobe @@ -0,0 +1,12 @@ +# Setup aliases from ip-over-ib devices to the ip-over-ib kernel module. +# Add to this list if you have more infiniband ports. Or you can set +# IPOIB_LOAD=yes to have the ip-over-ib interfaces brought up by init.d/openib +alias ib0 ib_ipoib +alias ib1 ib_ipoib +alias ib2 ib_ipoib +alias ib3 ib_ipoib + +alias net-pf-27 ib_sdp + +#options ib_mthca msi_x=1 + |