X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Fautoconf%2Flustre-lnet.m4;h=2d2c2f0dbe1fc6d4dfc30b3f569da6a1229a1b24;hp=223612085257e18e9a9a3f43a00926067353f7f5;hb=86274f9e1979e3da69952b2e7f5058e202dffb28;hpb=4a2c8c8db7b106f24cb0d44a8973ef2a6d3725c5 diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index 2236120..2d2c2f0 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -146,148 +146,55 @@ AC_DEFUN([LN_CONFIG_DLC], [ ]) # -# LN_CONFIG_QUADRICS -# -# check if quadrics support is in this kernel -# -AC_DEFUN([LN_CONFIG_QUADRICS], [ -AC_MSG_CHECKING([for QsNet sources]) -AC_ARG_WITH([qsnet], - AC_HELP_STRING([--with-qsnet=path], - [set path to qsnet source (default=$LINUX)]), - [QSNET=$with_qsnet], [QSNET=$LINUX]) -AC_MSG_RESULT([$QSNET]) - -QSWLND="" -QSWCPPFLAGS="" -AC_MSG_CHECKING([if quadrics kernel headers are present]) -AS_IF([test -d $QSNET/drivers/net/qsnet], [ - AC_MSG_RESULT([yes]) - QSWLND="qswlnd" - AC_MSG_CHECKING([for multirail EKC]) - AS_IF([test -f $QSNET/include/elan/epcomms.h], [ - AC_MSG_RESULT([supported]) - QSNET=$(readlink --canonicalize $QSNET) - QSWCPPFLAGS="-I$QSNET/include -DMULTIRAIL_EKC=1" - ], [ - AC_MSG_RESULT([not supported]) - AC_MSG_ERROR([Need multirail EKC]) - ]) - - AS_IF([test x$QSNET = x$LINUX], [ - LB_CHECK_CONFIG([QSNET], [], [ - LB_CHECK_CONFIG([QSNET_MODULE], [], [ - AC_MSG_WARN([QSNET is not enabled in this kernel; not building qswlnd.]) - QSWLND="" - QSWCPPFLAGS="" - ]) - ]) - ]) -], [ - AC_MSG_RESULT([no]) -]) -AC_SUBST(QSWLND) -AC_SUBST(QSWCPPFLAGS) -]) # LN_CONFIG_QUADRICS - -# -# LN_CONFIG_MX -# -AC_DEFUN([LN_CONFIG_MX], [ -# set default -MXPATH="/opt/mx" -AC_MSG_CHECKING([whether to enable Myrinet MX support]) -AC_ARG_WITH([mx], - AC_HELP_STRING([--with-mx=path], - [build mxlnd against path]), - [ - case $with_mx in - yes) ENABLEMX=2 ;; - no) ENABLEMX=0 ;; - *) ENABLEMX=3; MXPATH=$with_mx ;; - esac - ],[ - ENABLEMX=1 - ]) -AS_IF([test $ENABLEMX -eq 0], [ - AC_MSG_RESULT([disabled]) -], [test ! \( -f ${MXPATH}/include/myriexpress.h -a \ - -f ${MXPATH}/include/mx_kernel_api.h -a \ - -f ${MXPATH}/include/mx_pin.h \)], [ - AC_MSG_RESULT([no]) - case $ENABLEMX in - 1) ;; - 2) AC_MSG_ERROR([Myrinet MX kernel headers not present]) ;; - 3) AC_MSG_ERROR([bad --with-mx path]) ;; - *) AC_MSG_ERROR([internal error]) ;; - esac -], [ - AC_MSG_RESULT([check]) - MXPATH=$(readlink --canonicalize $MXPATH) - MXCPPFLAGS="-I$MXPATH/include" - MXLIBS="-L$MXPATH/lib" - EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS" - EXTRA_KCFLAGS="$EXTRA_KCFLAGS $MXCPPFLAGS" - LB_CHECK_COMPILE([if have Myrinet MX support], - myrinet_mx_support, [ - #define MX_KERNEL 1 - #include - #include - ],[ - mx_endpoint_t end; - mx_status_t status; - mx_request_t request; - int result; - mx_init(); - mx_open_endpoint(MX_ANY_NIC, MX_ANY_ENDPOINT, 0, NULL, 0, &end); - mx_register_unexp_handler(end, (mx_unexp_handler_t) NULL, NULL); - mx_wait_any(end, MX_INFINITE, 0LL, 0LL, &status, &result); - mx_iconnect(end, 0LL, 0, 0, 0, NULL, &request); - return 0; - ],[ - MXLND="mxlnd" - ],[ - case $ENABLEMX in - 1) ;; - 2) AC_MSG_ERROR([can't compile with Myrinet MX kernel headers]) ;; - 3) AC_MSG_ERROR([can't compile with Myrinet MX headers under $MXPATH]) ;; - *) AC_MSG_ERROR([internal error]) ;; - esac - MXCPPFLAGS="" - MXLIBS="" - MXLND="" - ]) - EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save" -]) -AC_SUBST(MXCPPFLAGS) -AC_SUBST(MXLIBS) -AC_SUBST(MXLND) -]) # LN_CONFIG_MX - -# # LN_CONFIG_O2IB # +# If current OFED installed (assume with "ofed_info") and devel +# headers are not found, error because we assume OFED infiniband +# driver needs to be used and we must configure/build with it. +# Current OFED headers detection mechanism allow for non-standard +# prefix but relies on "ofed_info" command and on "%prefix/openib" +# link (both are ok for 1.5.x and 3.x versions), and should work +# for both source and DKMS builds. +# AC_DEFUN([LN_CONFIG_O2IB], [ AC_MSG_CHECKING([whether to use Compat RDMA]) AC_ARG_WITH([o2ib], - AC_HELP_STRING([--with-o2ib=path], + AC_HELP_STRING([--with-o2ib=[yes|no|]], [build o2iblnd against path]), - [ - case $with_o2ib in - yes) O2IBPATHS="$LINUX $LINUX/drivers/infiniband" - ENABLEO2IB=2 - ;; - no) ENABLEO2IB=0 - ;; - *) O2IBPATHS=$with_o2ib - ENABLEO2IB=3 - ;; - esac - ],[ - O2IBPATHS="$LINUX $LINUX/drivers/infiniband" - ENABLEO2IB=1 - ]) -AS_IF([test $ENABLEO2IB -eq 0], [ + [], [with_o2ib="yes"]) + +case $with_o2ib in + yes) AS_IF([which ofed_info 2>/dev/null], [ + O2IBPATHS=$(ofed_info | egrep -w 'compat-rdma-devel|kernel-ib-devel|ofa_kernel-devel' | xargs rpm -ql | grep '/openib$') + AS_IF([test -z "$O2IBPATHS"], [ + AC_MSG_ERROR([ +You seem to have an OFED installed but have not installed it's devel package. +If you still want to build Lustre for your OFED I/B stack, you need to install its devel headers RPM. +Instead, if you want to build Lustre for your kernel's built-in I/B stack rather than your installed OFED stack, either remove the OFED package(s) or use --with-o2ib=no. + ]) + ]) + AS_IF([test $(echo $O2IBPATHS | wc -w) -ge 2], [ + AC_MSG_ERROR([ +It appears that you have multiple OFED versions installed. +If you still want to build Lustre for your OFED I/B stack, you need to install a single version with its devel headers RPM. +Instead, if you want to build Lustre for your kernel's built-in I/B stack rather than your installed OFED stack, either remove the OFED package(s) or use --with-o2ib=no. + ]) + ]) + OFED="yes" + ], [ + O2IBPATHS="$LINUX $LINUX/drivers/infiniband" + ]) + ENABLEO2IB="yes" + ;; + no) ENABLEO2IB="no" + ;; + *) O2IBPATHS=$with_o2ib + ENABLEO2IB="withpath" + OFED="yes" + ;; +esac + +AS_IF([test $ENABLEO2IB = "no"], [ AC_MSG_RESULT([no]) ], [ o2ib_found=false @@ -296,12 +203,14 @@ AS_IF([test $ENABLEO2IB -eq 0], [ -f ${O2IBPATH}/include/rdma/ib_cm.h -a \ -f ${O2IBPATH}/include/rdma/ib_verbs.h -a \ -f ${O2IBPATH}/include/rdma/ib_fmr_pool.h \)], [ - AS_IF([test \( -d ${O2IBPATH}/kernel_patches -a \ + AS_IF([test \( \( \( -d ${O2IBPATH}/patches -a \ + \( "x$OFED" = "xyes" \) \) -o \ + -d ${O2IBPATH}/kernel_patches \) -a \ -f ${O2IBPATH}/Makefile \)], [ AC_MSG_RESULT([no]) AC_MSG_ERROR([ -you appear to be trying to use the OFED distribution's source +trying to use the, explicit or detected, OFED distribution's source directory (${O2IBPATH}) rather than the "development/headers" directory which is likely in ${O2IBPATH%-*} ]) @@ -313,9 +222,8 @@ directory which is likely in ${O2IBPATH%-*} if ! $o2ib_found; then AC_MSG_RESULT([no]) case $ENABLEO2IB in - 1) ;; - 2) AC_MSG_ERROR([kernel OpenIB gen2 headers not present]) ;; - 3) AC_MSG_ERROR([bad --with-o2ib path]) ;; + "yes") AC_MSG_ERROR([no OFED nor kernel OpenIB gen2 headers present]) ;; + "withpath") AC_MSG_ERROR([bad --with-o2ib path]) ;; *) AC_MSG_ERROR([internal error]) ;; esac else @@ -335,10 +243,10 @@ directory which is likely in ${O2IBPATH%-*} fi else if test "x$RHEL_KERNEL" = xyes; then - case "$RHEL_KERNEL_VERSION" in - 2.6.32-358*) + case "$RHEL_RELEASE_NO" in + 64) EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_4" ;; - 2.6.32-431*) + 65) EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_4 -DCONFIG_COMPAT_RHEL_6_5" ;; esac elif test "x$SUSE_KERNEL" = xyes; then @@ -382,15 +290,14 @@ directory which is likely in ${O2IBPATH%-*} O2IBLND="o2iblnd" ],[ case $ENABLEO2IB in - 1) ;; - 2) AC_MSG_ERROR([can't compile with kernel OpenIB gen2 headers]) ;; - 3) AC_MSG_ERROR([can't compile with OpenIB gen2 headers under $O2IBPATH]) ;; + "yes") AC_MSG_ERROR([can't compile with OpenIB gen2 headers]) ;; + "withpath") AC_MSG_ERROR([can't compile with OpenIB gen2 headers under $O2IBPATH]) ;; *) AC_MSG_ERROR([internal error]) ;; esac ]) # we know at this point that the found OFED source is good O2IB_SYMVER="" - if test $ENABLEO2IB -eq 3 ; then + if test $ENABLEO2IB = "withpath" -o "x$OFED" = "xyes" ; then # OFED default rpm not handle sles10 Modules.symvers name for name in Module.symvers Modules.symvers; do if test -f $O2IBPATH/$name; then @@ -409,7 +316,7 @@ directory which is likely in ${O2IBPATH%-*} cat $PWD/$SYMVERFILE.old $O2IBPATH/$O2IB_SYMVER > $PWD/$SYMVERFILE rm $PWD/$SYMVERFILE.old else - AC_MSG_ERROR([an external source tree was specified for o2iblnd however I could not find a $O2IBPATH/Module.symvers there]) + AC_MSG_ERROR([an external source tree was, either specified or detected, for o2iblnd however I could not find a $O2IBPATH/Module.symvers there]) fi fi @@ -418,9 +325,11 @@ directory which is likely in ${O2IBPATH%-*} ]) AC_SUBST(EXTRA_OFED_INCLUDE) AC_SUBST(O2IBLND) +AC_SUBST(O2IBPATHS) +AC_SUBST(ENABLEO2IB) # In RHEL 6.2, rdma_create_id() takes the queue-pair type as a fourth argument -AS_IF([test $ENABLEO2IB -ne 0], [ +AS_IF([test $ENABLEO2IB != "no"], [ LB_CHECK_COMPILE([if 'rdma_create_id' wants four args], rdma_create_id_4args, [ #ifdef HAVE_COMPAT_RDMA @@ -437,35 +346,6 @@ AS_IF([test $ENABLEO2IB -ne 0], [ ]) # LN_CONFIG_O2IB # -# LN_CONFIG_RALND -# -# check whether to use the RapidArray lnd -# -AC_DEFUN([LN_CONFIG_RALND], [ -RALND="" -RACPPFLAGS="-I${LINUX}/drivers/xd1/include" -EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS" -EXTRA_KCFLAGS="$EXTRA_KCFLAGS $RACPPFLAGS" -LB_CHECK_COMPILE([if 'RapidArray' kernel headers are present], -RapkGetDeviceByIndex, [ - #include - #include -],[ - RAP_RETURN rc; - RAP_PVOID dev_handle; - rc = RapkGetDeviceByIndex(0, NULL, &dev_handle); - return rc == RAP_SUCCESS ? 0 : 1; -],[ - RALND="ralnd" -],[ - RACPPFLAGS="" -]) -EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save" -AC_SUBST(RACPPFLAGS) -AC_SUBST(RALND) -]) # LN_CONFIG_RALND - -# # LN_CONFIG_GNILND # # check whether to use the Gemini Network Interface lnd @@ -528,15 +408,6 @@ AC_SUBST(GNILND) ]) # LN_CONFIG_GNILND # -# LN_CONFIG_USERSPACE -# -# This is defined but empty because it is called from -# build/autconf/lustre-build.m4 which is shared by all branches. -# -AC_DEFUN([LN_CONFIG_USERSPACE], [ -]) # LN_CONFIG_USERSPACE - -# # LN_CONFIG_TCP_SENDPAGE # # 2.6.36 tcp_sendpage() first parameter is 'struct sock' instead of 'struct socket'. @@ -590,11 +461,8 @@ AC_MSG_NOTICE([LNet kernel checks LN_FUNC_DEV_GET_BY_NAME_2ARG LN_CONFIG_AFFINITY LN_CONFIG_BACKOFF -LN_CONFIG_QUADRICS LN_CONFIG_O2IB -LN_CONFIG_RALND LN_CONFIG_GNILND -LN_CONFIG_MX # 2.6.36 LN_CONFIG_TCP_SENDPAGE # 3.15 @@ -679,13 +547,10 @@ LN_CONFIG_DLC # # LN_CONDITIONALS # -# AM_CONDITOINAL defines for lnet +# AM_CONDITIONAL defines for lnet # AC_DEFUN([LN_CONDITIONALS], [ -AM_CONDITIONAL(BUILD_QSWLND, test x$QSWLND = "xqswlnd") -AM_CONDITIONAL(BUILD_MXLND, test x$MXLND = "xmxlnd") AM_CONDITIONAL(BUILD_O2IBLND, test x$O2IBLND = "xo2iblnd") -AM_CONDITIONAL(BUILD_RALND, test x$RALND = "xralnd") AM_CONDITIONAL(BUILD_GNILND, test x$GNILND = "xgnilnd") AM_CONDITIONAL(BUILD_GNILND_RCA, test x$GNILNDRCA = "xgnilndrca") AM_CONDITIONAL(BUILD_DLC, test x$USE_DLC = "xyes") @@ -706,14 +571,8 @@ lnet/include/Makefile lnet/include/lnet/Makefile lnet/klnds/Makefile lnet/klnds/autoMakefile -lnet/klnds/mxlnd/autoMakefile -lnet/klnds/mxlnd/Makefile lnet/klnds/o2iblnd/Makefile lnet/klnds/o2iblnd/autoMakefile -lnet/klnds/qswlnd/Makefile -lnet/klnds/qswlnd/autoMakefile -lnet/klnds/ralnd/Makefile -lnet/klnds/ralnd/autoMakefile lnet/klnds/gnilnd/Makefile lnet/klnds/gnilnd/autoMakefile lnet/klnds/socklnd/Makefile