X-Git-Url: https://git.whamcloud.com/?p=fs%2Flustre-release.git;a=blobdiff_plain;f=lnet%2Fautoconf%2Flustre-lnet.m4;h=05b47dbe7e3e8182768a885ed22e3e0589bc6cb0;hp=236141523cfe93b6b013a5426f2051a398b72fda;hb=ac25785328d31f63bd76a03f9cbb76f7f31f2ab0;hpb=6cba4c1958b8bc25e7c675fd7ec6bf2772c7c0f0 diff --git a/lnet/autoconf/lustre-lnet.m4 b/lnet/autoconf/lustre-lnet.m4 index 2361415..05b47db 100644 --- a/lnet/autoconf/lustre-lnet.m4 +++ b/lnet/autoconf/lustre-lnet.m4 @@ -42,21 +42,6 @@ fi ]) # LN_CHECK_GCC_VERSION # -# LN_FUNC_DEV_GET_BY_NAME_2ARG -# -AC_DEFUN([LN_FUNC_DEV_GET_BY_NAME_2ARG], [ -LB_CHECK_COMPILE([if 'dev_get_by_name' has two args], -dev_get_by_name_2args, [ - #include -],[ - dev_get_by_name(NULL, NULL); -],[ - AC_DEFINE(HAVE_DEV_GET_BY_NAME_2ARG, 1, - [dev_get_by_name has 2 args]) -]) -]) # LN_FUNC_DEV_GET_BY_NAME_2ARG - -# # LN_CONFIG_AFFINITY # # check if cpu affinity is available/wanted @@ -203,18 +188,6 @@ AS_IF([test $ENABLEO2IB = "no"], [ -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}/patches -a \ - \( "x$OFED" = "xyes" \) \) -o \ - -d ${O2IBPATH}/kernel_patches \) -a \ - -f ${O2IBPATH}/Makefile \)], [ - AC_MSG_RESULT([no]) - AC_MSG_ERROR([ - -trying to use the, explicit or detected, OFED distribution's source -directory (${O2IBPATH}) rather than the "development/headers" -directory which is likely in ${O2IBPATH%-*} -]) - ]) o2ib_found=true break ]) @@ -227,11 +200,16 @@ directory which is likely in ${O2IBPATH%-*} *) AC_MSG_ERROR([internal error]) ;; esac else + COMPAT_AUTOCONF="" compatrdma_found=false if test -f ${O2IBPATH}/include/linux/compat-2.6.h; then AC_MSG_RESULT([yes]) compatrdma_found=true AC_DEFINE(HAVE_COMPAT_RDMA, 1, [compat rdma found]) + EXTRA_OFED_CONFIG="$EXTRA_OFED_CONFIG -include ${O2IBPATH}/include/linux/compat-2.6.h" + if test -f "$O2IBPATH/include/linux/compat_autoconf.h"; then + COMPAT_AUTOCONF="$O2IBPATH/include/linux/compat_autoconf.h" + fi else AC_MSG_RESULT([no]) fi @@ -241,19 +219,21 @@ directory which is likely in ${O2IBPATH%-*} elif test -f "$O2IBPATH/ofed_patch.mk"; then . "$O2IBPATH/ofed_patch.mk" fi - else + elif test -z "$COMPAT_AUTOCONF"; then + # Depreciated checks if test "x$RHEL_KERNEL" = xyes; then - case "$RHEL_RELEASE_NO" in - 64) - EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_4" ;; - 65) - EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_6_4 -DCONFIG_COMPAT_RHEL_6_5" ;; - esac + RHEL_MAJOR=$(awk '/ RHEL_MAJOR / { print [$]3 }' $LINUX_OBJ/include/$VERSION_HDIR/version.h) + I=$(awk '/ RHEL_MINOR / { print [$]3 }' $LINUX_OBJ/include/$VERSION_HDIR/version.h) + while test "$I" -ge 0; do + EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_RHEL_${RHEL_MAJOR}_$I" + I=$(($I-1)) + done elif test "x$SUSE_KERNEL" = xyes; then SP=$(grep PATCHLEVEL /etc/SuSE-release | sed -e 's/.*= *//') EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_SLES_11_$SP" fi fi + AC_MSG_CHECKING([whether to use any OFED backport headers]) if test -n "$BACKPORT_INCLUDES"; then AC_MSG_RESULT([yes]) @@ -269,6 +249,12 @@ directory which is likely in ${O2IBPATH%-*} LB_CHECK_COMPILE([whether to enable OpenIB gen2 support], openib_gen2_support, [ #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL #include #endif #include @@ -314,19 +300,46 @@ directory which is likely in ${O2IBPATH%-*} fi fi - LN_CONFIG_OFED_SPEC + LB_CHECK_COMPILE([if Linux kernel has kthread_worker], + linux_kthread_worker, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif + #include + ],[ + struct kthread_work *kth_wrk __attribute__ ((unused)); + flush_kthread_work(kth_wrk); + ],[ + AC_DEFINE(HAVE_KTHREAD_WORK, 1, [kthread_worker found]) + if test -z "$COMPAT_AUTOCONF"; then + EXTRA_OFED_INCLUDE="$EXTRA_OFED_INCLUDE -DCONFIG_COMPAT_IS_KTHREAD" + fi + ]) fi ]) +AC_SUBST(EXTRA_OFED_CONFIG) AC_SUBST(EXTRA_OFED_INCLUDE) AC_SUBST(O2IBLND) -AC_SUBST(O2IBPATHS) +AC_SUBST(O2IBPATH) AC_SUBST(ENABLEO2IB) -# In RHEL 6.2, rdma_create_id() takes the queue-pair type as a fourth argument AS_IF([test $ENABLEO2IB != "no"], [ + # In RHEL 6.2, rdma_create_id() takes the queue-pair type as a fourth argument LB_CHECK_COMPILE([if 'rdma_create_id' wants four args], rdma_create_id_4args, [ #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL #include #endif #include @@ -336,7 +349,118 @@ AS_IF([test $ENABLEO2IB != "no"], [ AC_DEFINE(HAVE_RDMA_CREATE_ID_4ARG, 1, [rdma_create_id wants 4 args]) ]) -]) + + # 4.4 added network namespace parameter for rdma_create_id() + LB_CHECK_COMPILE([if 'rdma_create_id' wants five args], + rdma_create_id_5args, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif + #include + ],[ + rdma_create_id(NULL, NULL, NULL, 0, 0); + ],[ + AC_DEFINE(HAVE_RDMA_CREATE_ID_5ARG, 1, + [rdma_create_id wants 5 args]) + ]) + + # 4.2 introduced struct ib_cq_init_attr which is used + # by ib_create_cq(). Note some OFED stacks only keep + # their headers in sync with latest kernels but not + # the functionality which means for infiniband testing + # we need to always test functionality testings. + LB_CHECK_COMPILE([if 'struct ib_cq_init_attr' is used], + ib_cq_init_attr, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif + #include + ],[ + struct ib_cq_init_attr cq_attr; + + ib_create_cq(NULL, NULL, NULL, NULL, &cq_attr); + ],[ + AC_DEFINE(HAVE_IB_CQ_INIT_ATTR, 1, + [struct ib_cq_init_attr is used by ib_create_cq]) + ]) + + # 4.3 removed ib_alloc_fast_reg_mr() + LB_CHECK_COMPILE([if 'ib_alloc_fast_reg_mr' exists], + ib_alloc_fast_reg_mr, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif + #include + ],[ + ib_alloc_fast_reg_mr(NULL, 0); + ],[ + AC_DEFINE(HAVE_IB_ALLOC_FAST_REG_MR, 1, + [ib_alloc_fast_reg_mr is defined]) + ]) + + # In v4.4 Linux kernel, + # commit e622f2f4ad2142d2a613a57fb85f8cf737935ef5 + # split up struct ib_send_wr so that all non-trivial verbs + # use their own structure which embedds struct ib_send_wr. + LB_CHECK_COMPILE([if 'struct ib_rdma_wr' is defined], + ib_rdma_wr, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif + #include + ],[ + struct ib_rdma_wr *wr __attribute__ ((unused)); + + wr = rdma_wr(NULL); + ],[ + AC_DEFINE(HAVE_IB_RDMA_WR, 1, + [struct ib_rdma_wr is defined]) + ]) + + # new fast registration API introduced in 4.4 + LB_CHECK_COMPILE([if 'ib_map_mr_sg' exists], + ib_map_mr_sg, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif + #include + ],[ + ib_map_mr_sg(NULL, NULL, 0, 0); + ],[ + AC_DEFINE(HAVE_IB_MAP_MR_SG, 1, + [ib_map_mr_sg exists]) + ]) +]) # ENABLEO2IB != "no" ]) # LN_CONFIG_O2IB # @@ -408,6 +532,12 @@ AC_DEFUN([LN_CONFIG_SK_SLEEP], [ LB_CHECK_COMPILE([if Linux kernel has 'sk_sleep'], sk_sleep, [ #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL #include #endif #include @@ -429,6 +559,15 @@ tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" LB_CHECK_COMPILE([if 'tcp_sendpage' first parameter is socket], tcp_sendpage_socket, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif #include #include ],[ @@ -450,6 +589,15 @@ tmp_flags="$EXTRA_KCFLAGS" EXTRA_KCFLAGS="-Werror" LB_CHECK_COMPILE([if 'sk_data_ready' takes only one argument], sk_data_ready, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif #include #include ],[ @@ -462,6 +610,33 @@ EXTRA_KCFLAGS="$tmp_flags" ]) # LN_CONFIG_SK_DATA_READY # +# LN_CONFIG_IB_INC_RKEY +# +AC_DEFUN([LN_CONFIG_IB_INC_RKEY], [ +tmp_flags="$EXTRA_KCFLAGS" +EXTRA_KCFLAGS="-Werror" +LB_CHECK_COMPILE([if function 'ib_inc_rkey' is defined], +ib_inc_rkey, [ + #ifdef HAVE_COMPAT_RDMA + #undef PACKAGE_NAME + #undef PACKAGE_TARNAME + #undef PACKAGE_VERSION + #undef PACKAGE_STRING + #undef PACKAGE_BUGREPORT + #undef PACKAGE_URL + #include + #endif + #include +],[ + (void)ib_inc_rkey(0); +],[ + AC_DEFINE(HAVE_IB_INC_RKEY, 1, + [function ib_inc_rkey exist]) +]) +EXTRA_KCFLAGS="$tmp_flags" +]) # LN_CONFIG_IB_INC_RKEY + +# # LN_PROG_LINUX # # LNet linux kernel checks @@ -470,11 +645,11 @@ AC_DEFUN([LN_PROG_LINUX], [ AC_MSG_NOTICE([LNet kernel checks ==============================================================================]) -LN_FUNC_DEV_GET_BY_NAME_2ARG LN_CONFIG_AFFINITY LN_CONFIG_BACKOFF LN_CONFIG_O2IB LN_CONFIG_GNILND +LN_CONFIG_IB_INC_RKEY # 2.6.35 LN_CONFIG_SK_SLEEP # 2.6.36