diff options
Diffstat (limited to 'sys-infiniband/ofed')
-rw-r--r-- | sys-infiniband/ofed/ChangeLog | 11 | ||||
-rw-r--r-- | sys-infiniband/ofed/files/90-ib.rules | 5 | ||||
-rw-r--r-- | sys-infiniband/ofed/files/openib | 243 | ||||
-rw-r--r-- | sys-infiniband/ofed/files/openib.conf | 27 | ||||
-rw-r--r-- | sys-infiniband/ofed/files/openib.env | 1 | ||||
-rw-r--r-- | sys-infiniband/ofed/files/openib.modprobe | 12 | ||||
-rw-r--r-- | sys-infiniband/ofed/metadata.xml | 14 | ||||
-rw-r--r-- | sys-infiniband/ofed/ofed-1.5.4.1.ebuild | 157 |
8 files changed, 470 insertions, 0 deletions
diff --git a/sys-infiniband/ofed/ChangeLog b/sys-infiniband/ofed/ChangeLog new file mode 100644 index 000000000000..9ac80bc4b13f --- /dev/null +++ b/sys-infiniband/ofed/ChangeLog @@ -0,0 +1,11 @@ +# ChangeLog for sys-infiniband/ofed +# Copyright 1999-2012 Gentoo Foundation; Distributed under the GPL v2 +# $Header: /var/cvsroot/gentoo-x86/sys-infiniband/ofed/ChangeLog,v 1.1 2012/04/18 16:45:04 alexxy Exp $ + +*ofed-1.5.4.1 (18 Apr 2012) + + 18 Apr 2012; Alexey Shvetsov <alexxy@gentoo.org> +files/90-ib.rules, + +files/openib, +files/openib.conf, +files/openib.env, +files/openib.modprobe, + +metadata.xml, +ofed-1.5.4.1.ebuild: + [sys-infiniband/ofed] Version bump to OFED 1.5.4.1 + diff --git a/sys-infiniband/ofed/files/90-ib.rules b/sys-infiniband/ofed/files/90-ib.rules new file mode 100644 index 000000000000..789668486c8c --- /dev/null +++ b/sys-infiniband/ofed/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/ofed/files/openib b/sys-infiniband/ofed/files/openib new file mode 100644 index 000000000000..a438c2fb9f22 --- /dev/null +++ b/sys-infiniband/ofed/files/openib @@ -0,0 +1,243 @@ +#!/sbin/runscript +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-infiniband/ofed/files/openib,v 1.1 2012/04/18 16:45:04 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/ofed/files/openib.conf b/sys-infiniband/ofed/files/openib.conf new file mode 100644 index 000000000000..9b4eb292857c --- /dev/null +++ b/sys-infiniband/ofed/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/ofed/files/openib.env b/sys-infiniband/ofed/files/openib.env new file mode 100644 index 000000000000..2e34cf22f96b --- /dev/null +++ b/sys-infiniband/ofed/files/openib.env @@ -0,0 +1 @@ +IBPATH="/usr/sbin" diff --git a/sys-infiniband/ofed/files/openib.modprobe b/sys-infiniband/ofed/files/openib.modprobe new file mode 100644 index 000000000000..52828fb3bf65 --- /dev/null +++ b/sys-infiniband/ofed/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 + diff --git a/sys-infiniband/ofed/metadata.xml b/sys-infiniband/ofed/metadata.xml new file mode 100644 index 000000000000..e87a245631d7 --- /dev/null +++ b/sys-infiniband/ofed/metadata.xml @@ -0,0 +1,14 @@ +<?xml version="1.0" encoding="UTF-8"?> +<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd"> +<pkgmetadata> + <herd>cluster</herd> + <use> + <flag name='dapl'>Add support for DAPL abstraction layer</flag> + <flag name='diags'>Add dignostic tools for infiniband</flag> + <flag name='opensm'>Add OpenSM - Subnet manager for infiniband</flag> + <flag name='perftest'>Add perftest utils</flag> + <flag name='sdp'>Add SDP tools</flag> + <flag name="srp">Suport for userspace part for srp initiator</flag> + <flag name="rds">Tools to manage rds sockets</flag> + </use> +</pkgmetadata> diff --git a/sys-infiniband/ofed/ofed-1.5.4.1.ebuild b/sys-infiniband/ofed/ofed-1.5.4.1.ebuild new file mode 100644 index 000000000000..6fdcc4739e1c --- /dev/null +++ b/sys-infiniband/ofed/ofed-1.5.4.1.ebuild @@ -0,0 +1,157 @@ +# Copyright 1999-2012 Gentoo Foundation +# Distributed under the terms of the GNU General Public License v2 +# $Header: /var/cvsroot/gentoo-x86/sys-infiniband/ofed/ofed-1.5.4.1.ebuild,v 1.1 2012/04/18 16:45:04 alexxy Exp $ + +EAPI="4" + +OFED_VER="1.5.4.1" +OFED_SUFFIX="OFED.1.5.4.1" + +IUSE_OFED_DRIVERS=" + ofed_drivers_cxgb3 + ofed_drivers_cxgb4 + ofed_drivers_ehca + ofed_drivers_ipath + ofed_drivers_mlx4 + ofed_drivers_mthca + ofed_drivers_nes + ofed_drivers_psm" + +inherit openib + +DESCRIPTION="OpenIB system files" +SCRIPTDIR="${S}/ofed_scripts" +KEYWORDS="~amd64 ~x86 ~amd64-linux" +IUSE="dapl +diags +opensm perftest rds sdp srp ${IUSE_OFED_DRIVERS}" + +DEPEND="!sys-infiniband/openib + !sys-infiniband/openib-files + sys-infiniband/libibcm:${SLOT} + sys-infiniband/libibmad:${SLOT} + sys-infiniband/libibumad:${SLOT} + dapl? ( sys-infiniband/dapl:${SLOT} ) + diags? ( sys-infiniband/infiniband-diags:${SLOT} ) + opensm? ( sys-infiniband/opensm:${SLOT} ) + perftest? ( sys-infiniband/perftest:${SLOT} ) + sdp? ( sys-infiniband/libsdp:${SLOT} ) + srp? ( sys-infiniband/srptools:${SLOT} ) + ofed_drivers_cxgb3? ( sys-infiniband/libcxgb3:${SLOT} ) + ofed_drivers_cxgb4? ( sys-infiniband/libcxgb4:${SLOT} ) + ofed_drivers_ehca? ( sys-infiniband/libehca:${SLOT} ) + ofed_drivers_ipath? ( sys-infiniband/libipathverbs:${SLOT} ) + ofed_drivers_mlx4? ( sys-infiniband/libmlx4:${SLOT} ) + ofed_drivers_mthca? ( sys-infiniband/libmthca:${SLOT} ) + ofed_drivers_nes? ( sys-infiniband/libnes:${SLOT} ) + ofed_drivers_psm? ( sys-infiniband/infinipath-psm:${SLOT} ) + " +RDEPEND="${DEPEND}" + +src_configure() { + einfo "Nothing to configure" +} + +src_compile() { + einfo "Nothing to compile" +} + +src_install() { + insinto /etc/udev/rules.d + newins "${SCRIPTDIR}/90-ib.rules" 40-ib.rules + insinto /etc/modprobe.d + newins "${FILESDIR}/openib.modprobe" openib.conf + newenvd "${FILESDIR}/openib.env" 02openib + insinto /etc/infiniband + + doinitd "${FILESDIR}/openib" + + # build openib.conf based on ofed_scripts/ofa_kernel.spec + build_ipoib=1 + build_sdp=1 + cp "${SCRIPTDIR}/openib.conf" "${T}" + IB_CONF_DIR=${T} + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load UCM module" >> ${IB_CONF_DIR}/openib.conf + echo "UCM_LOAD=no" >> ${IB_CONF_DIR}/openib.conf + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load RDMA_CM module" >> ${IB_CONF_DIR}/openib.conf + echo "RDMA_CM_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load RDMA_UCM module" >> ${IB_CONF_DIR}/openib.conf + echo "RDMA_UCM_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Increase ib_mad thread priority" >> ${IB_CONF_DIR}/openib.conf + echo "RENICE_IB_MAD=no" >> ${IB_CONF_DIR}/openib.conf + + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load MTHCA" >> ${IB_CONF_DIR}/openib.conf + echo "MTHCA_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + if use ipath; then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load IPATH" >> ${IB_CONF_DIR}/openib.conf + echo "IPATH_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + fi + if use ehca; then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load eHCA" >> ${IB_CONF_DIR}/openib.conf + echo "EHCA_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + fi + if use mlx4; then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load MLX4 modules" >> ${IB_CONF_DIR}/openib.conf + echo "MLX4_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + fi + if (( build_ipoib )); then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load IPoIB" >> ${IB_CONF_DIR}/openib.conf + echo "#IPOIB_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Enable IPoIB Connected Mode" >> ${IB_CONF_DIR}/openib.conf + echo "#SET_IPOIB_CM=yes" >> ${IB_CONF_DIR}/openib.conf + # from ofa_user.spec: + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Enable IPoIB High Availability daemon" >> ${IB_CONF_DIR}/openib.conf + echo "#IPOIBHA_ENABLE=no" >> ${IB_CONF_DIR}/openib.conf + echo "# PRIMARY_IPOIB_DEV=ib0" >> ${IB_CONF_DIR}/openib.conf + echo "# SECONDARY_IPOIB_DEV=ib1" >> ${IB_CONF_DIR}/openib.conf + fi + if (( build_sdp )); then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load SDP module" >> ${IB_CONF_DIR}/openib.conf + echo "#SDP_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + fi + if use srp; then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load SRP module" >> ${IB_CONF_DIR}/openib.conf + echo "#SRP_LOAD=no" >> ${IB_CONF_DIR}/openib.conf + # from ofa_user.spec: + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Enable SRP High Availability daemon" >> ${IB_CONF_DIR}/openib.conf + echo "#SRPHA_ENABLE=no" >> ${IB_CONF_DIR}/openib.conf + + fi + if use iser; then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load ISER module" >> ${IB_CONF_DIR}/openib.conf + echo "#ISER_LOAD=no" >> ${IB_CONF_DIR}/openib.conf + fi + if use rds; then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load RDS module" >> ${IB_CONF_DIR}/openib.conf + echo "#RDS_LOAD=no" >> ${IB_CONF_DIR}/openib.conf + fi + if use vnic; then + echo >> ${IB_CONF_DIR}/openib.conf + echo "# Load VNIC module" >> ${IB_CONF_DIR}/openib.conf + echo "#VNIC_LOAD=yes" >> ${IB_CONF_DIR}/openib.conf + fi + + doins "${T}/openib.conf" +} + +pkg_postinst() { + einfo "Configuration file installed in /etc/infiniband/openib.conf" + einfo "To automatically initialize infiniband on boot, add openib to your" + einfo "start-up scripts, like so:" + einfo "\`rc-update add openib default\`" + +} |