Whamcloud - gitweb
* 5602 fix improves checks that NID is set correctly and causes incorrect
[fs/lustre-release.git] / lnet / autoconf / lustre-lnet.m4
index 41f42b5..06bdf39 100644 (file)
@@ -90,7 +90,7 @@ AC_SUBST(QSWNAL)
 #
 # LP_CONFIG_GM
 #
-# check if infiniband support is available
+# check if GM support is available
 #
 AC_DEFUN([LP_CONFIG_GM],
 [AC_MSG_CHECKING([if gm support was requested])
@@ -128,26 +128,76 @@ AC_SUBST(GMNAL)
 # LP_CONFIG_OPENIB
 #
 # check for OpenIB in the kernel
-AC_DEFUN([LP_CONFIG_OPENIB],
-[AC_MSG_CHECKING([if OpenIB kernel headers are present])
-OPENIBCPPFLAGS="-I$LINUX/drivers/infiniband/include -DIN_TREE_BUILD"
-EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS $OPENIBCPPFLAGS"
-LB_LINUX_TRY_COMPILE(
+AC_DEFUN([LP_CONFIG_OPENIB],[
+AC_MSG_CHECKING([whether to enable OpenIB support])
+# set default
+OPENIBPATH="$LINUX/drivers/infiniband"
+AC_ARG_WITH([openib],
+       AC_HELP_STRING([--with-openib=path],
+                      [build openibnal against path]),
        [
+               case $with_openib in
+               yes)    ENABLEOPENIB=2
+                       ;;
+               no)     ENABLEOPENIB=0
+                       ;;
+               *)      OPENIBPATH="$with_openib"
+                       ENABLEOPENIB=3
+                       ;;
+               esac
+       ],[
+               ENABLEOPENIB=1
+       ])
+if test $ENABLEOPENIB -eq 0; then
+       AC_MSG_RESULT([disabled])
+elif test ! \( -f ${OPENIBPATH}/include/ts_ib_core.h -a \
+               -f ${OPENIBPATH}/include/ts_ib_cm.h -a\
+              -f ${OPENIBPATH}/include/ts_ib_sa_client.h \); then
+       AC_MSG_RESULT([no])
+       case $ENABLEOPENIB in
+       1) ;;
+       2) AC_MSG_ERROR([kernel OpenIB headers not present]);;
+       3) AC_MSG_ERROR([bad --with-openib path]);;
+       *) AC_MSG_ERROR([internal error]);;
+       esac
+else
+       case $ENABLEOPENIB in
+       1|2) OPENIBCPPFLAGS="-I$OPENIBPATH/include -DIN_TREE_BUILD";;
+       3)   OPENIBCPPFLAGS="-I$OPENIBPATH/include";;
+       *)   AC_MSG_RESULT([no])
+            AC_MSG_ERROR([internal error]);;
+       esac
+       EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
+       EXTRA_KCFLAGS="$EXTRA_KCFLAGS $OPENIBCPPFLAGS"
+       LB_LINUX_TRY_COMPILE([
                #include <ts_ib_core.h>
+               #include <ts_ib_cm.h>
+               #include <ts_ib_sa_client.h>
        ],[
-                struct ib_device_properties props;
+                       struct ib_device_properties dev_props;
+               struct ib_cm_active_param   cm_active_params;
+               tTS_IB_CLIENT_QUERY_TID     tid;
+               int                         enum1 = IB_QP_ATTRIBUTE_STATE;
+               int                         enum2 = IB_ACCESS_LOCAL_WRITE;
+               int                         enum3 = IB_CQ_CALLBACK_INTERRUPT;
+               int                         enum4 = IB_CQ_PROVIDER_REARM;
                return 0;
        ],[
                AC_MSG_RESULT([yes])
                OPENIBNAL="openibnal"
        ],[
                AC_MSG_RESULT([no])
+               case $ENABLEOPENIB in
+               1) ;;
+               2) AC_MSG_ERROR([can't compile with kernel OpenIB headers]);;
+               3) AC_MSG_ERROR([can't compile with OpenIB headers under $OPENIBPATH]);;
+               *) AC_MSG_ERROR([internal error]);;
+               esac
                OPENIBNAL=""
                OPENIBCPPFLAGS=""
        ])
-EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+       EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+fi
 AC_SUBST(OPENIBCPPFLAGS)
 AC_SUBST(OPENIBNAL)
 ])
@@ -187,6 +237,39 @@ AC_SUBST(IIBNAL)
 ])
 
 #
+# LP_CONFIG_VIB
+#
+# check for Voltaire infiniband support
+#
+AC_DEFUN([LP_CONFIG_VIB],
+[AC_MSG_CHECKING([if Voltaire IB kernel headers are present])
+VIBCPPFLAGS="-I/usr/local/include/ibhost-kdevel -DCPU_BE=0 -DCPU_LE=1 -DGSI_PASS_PORT_NUM"
+EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS"
+LB_LINUX_TRY_COMPILE([
+        #include <linux/list.h>
+       #include <vverbs.h>
+],[
+        vv_hca_h_t     kib_hca;
+       vv_return_t    retval;
+
+       retval = vv_hca_open("ANY_HCA", NULL, &kib_hca);
+
+       return retval == vv_return_ok ? 0 : 1;
+],[
+       AC_MSG_RESULT([yes])
+       VIBNAL="vibnal"
+],[
+       AC_MSG_RESULT([no])
+       VIBNAL=""
+       VIBCPPFLAGS=""
+])
+EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+AC_SUBST(VIBCPPFLAGS)
+AC_SUBST(VIBNAL)
+])
+
+#
 # LP_CONFIG_RANAL
 #
 # check whether to use the RapidArray nal
@@ -195,7 +278,7 @@ AC_DEFUN([LP_CONFIG_RANAL],
 [#### Rapid Array
 AC_MSG_CHECKING([if RapidArray kernel headers are present])
 # placeholder
-RACPPFLAGS="-I/tmp"
+RACPPFLAGS="-I${LINUX}/drivers/xd1/include"
 EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
 EXTRA_KCFLAGS="$EXTRA_KCFLAGS $RACPPFLAGS"
 LB_LINUX_TRY_COMPILE([
@@ -332,10 +415,9 @@ AC_DEFUN([LP_PROG_LINUX],
 LP_CONFIG_AFFINITY
 LP_CONFIG_QUADRICS
 LP_CONFIG_GM
-if test $linux25 = 'no' ; then
-       LP_CONFIG_OPENIB
-fi
+LP_CONFIG_OPENIB
 LP_CONFIG_IIB
+LP_CONFIG_VIB
 LP_CONFIG_RANAL
 
 LP_STRUCT_PAGE_LIST
@@ -474,6 +556,7 @@ AC_DEFUN([LP_CONDITIONALS],
 AM_CONDITIONAL(BUILD_GMNAL, test x$GMNAL = "xgmnal")
 AM_CONDITIONAL(BUILD_OPENIBNAL, test x$OPENIBNAL = "xopenibnal")
 AM_CONDITIONAL(BUILD_IIBNAL, test x$IIBNAL = "xiibnal")
+AM_CONDITIONAL(BUILD_VIBNAL, test x$VIBNAL = "xvibnal")
 AM_CONDITIONAL(BUILD_RANAL, test x$RANAL = "xranal")
 ])
 
@@ -496,12 +579,14 @@ portals/knals/Makefile
 portals/knals/autoMakefile
 portals/knals/gmnal/Makefile
 portals/knals/gmnal/autoMakefile
+portals/knals/openibnal/Makefile
+portals/knals/openibnal/autoMakefile
 portals/knals/iibnal/Makefile
 portals/knals/iibnal/autoMakefile
+portals/knals/vibnal/Makefile
+portals/knals/vibnal/autoMakefile
 portals/knals/lonal/Makefile
 portals/knals/lonal/autoMakefile
-portals/knals/openibnal/Makefile
-portals/knals/openibnal/autoMakefile
 portals/knals/qswnal/Makefile
 portals/knals/qswnal/autoMakefile
 portals/knals/ranal/Makefile