AC_DEFUN([LN_CONFIG_MAX_PAYLOAD],
[AC_MSG_CHECKING([for non-default maximum LNET payload])
AC_ARG_WITH([max-payload-mb],
- AC_HELP_STRING([--with-max-payload-mb=MBytes],
+ AC_HELP_STRING([--with-max-payload-mb=MBytes],
[set maximum lnet payload in MBytes]),
[
AC_MSG_RESULT([$with_max_payload_mb])
AC_DEFINE(LIBCFS_DEBUG, 1, [enable libcfs LASSERT, LASSERTF])
fi
])
-
+
#
# LN_CONFIG_AFFINITY
#
cpumask_t m;
#else
unsigned long m;
- #endif
+ #endif
set_cpus_allowed(&t, m);
],[
AC_DEFINE(CPU_AFFINITY, 1, [kernel has cpu affinity support])
AC_DEFUN([LN_CONFIG_PORTALS],
[AC_MSG_CHECKING([for portals])
AC_ARG_WITH([portals],
- AC_HELP_STRING([--with-portals=path],
+ AC_HELP_STRING([--with-portals=path],
[set path to portals]),
[
case $with_portals in
ENABLEPORTALS=1
;;
esac
-
], [
ENABLEPORTALS=0
])
AC_DEFUN([LN_CONFIG_O2IB],[
AC_MSG_CHECKING([whether to enable OpenIB gen2 support])
# set default
-O2IBPATH="$LINUX/drivers/infiniband"
AC_ARG_WITH([o2ib],
AC_HELP_STRING([--with-o2ib=path],
[build o2iblnd against path]),
[
case $with_o2ib in
- yes) ENABLEO2IB=2
+ yes) O2IBPATHS="$LINUX $LINUX/drivers/infiniband"
+ ENABLEO2IB=2
;;
no) ENABLEO2IB=0
;;
- *) O2IBPATH=$with_o2ib
+ *) O2IBPATHS=$with_o2ib
ENABLEO2IB=3
;;
esac
],[
+ O2IBPATHS="$LINUX $LINUX/drivers/infiniband"
ENABLEO2IB=1
])
if test $ENABLEO2IB -eq 0; then
AC_MSG_RESULT([disabled])
-elif test ! \( -f ${O2IBPATH}/include/rdma/rdma_cm.h -a \
- -f ${O2IBPATH}/include/rdma/ib_cm.h -a\
- -f ${O2IBPATH}/include/rdma/ib_verbs.h -a\
- -f ${O2IBPATH}/include/rdma/ib_fmr_pool.h \); 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]);;
- *) AC_MSG_ERROR([internal error]);;
- esac
else
- O2IBCPPFLAGS="-I$O2IBPATH/include"
- EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
- EXTRA_KCFLAGS="$EXTRA_KCFLAGS $O2IBCPPFLAGS"
- LB_LINUX_TRY_COMPILE([
- #include <linux/version.h>
- #if !HAVE_GFP_T
- typedef int gfp_t;
- #endif
- #include <rdma/rdma_cm.h>
- #include <rdma/ib_cm.h>
- #include <rdma/ib_verbs.h>
- #include <rdma/ib_fmr_pool.h>
- ],[
- struct rdma_cm_id *cm_id;
- struct rdma_conn_param conn_param;
- struct ib_device_attr device_attr;
- struct ib_qp_attr qp_attr;
- struct ib_pool_fmr pool_fmr;
- enum ib_cm_rej_reason rej_reason;
-
- cm_id = rdma_create_id(NULL, NULL, RDMA_PS_TCP);
- return PTR_ERR(cm_id);
- ],[
- AC_MSG_RESULT([yes])
- O2IBLND="o2iblnd"
- ],[
+ o2ib_found=false
+ for O2IBPATH in $O2IBPATHS; do
+ if test \( -f ${O2IBPATH}/include/rdma/rdma_cm.h -a \
+ -f ${O2IBPATH}/include/rdma/ib_cm.h -a \
+ -f ${O2IBPATH}/include/rdma/ib_verbs.h -a \
+ -f ${O2IBPATH}/include/rdma/ib_fmr_pool.h \); then
+ o2ib_found=true
+ break
+ fi
+ done
+ if ! $o2ib_found; then
AC_MSG_RESULT([no])
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]);;
- *) AC_MSG_ERROR([internal error]);;
+ 1) ;;
+ 2) AC_MSG_ERROR([kernel OpenIB gen2 headers not present]);;
+ 3) AC_MSG_ERROR([bad --with-o2ib path]);;
+ *) AC_MSG_ERROR([internal error]);;
esac
- O2IBLND=""
- O2IBCPPFLAGS=""
- ])
- EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+ else
+ O2IBCPPFLAGS="-I$O2IBPATH/include"
+ EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS $O2IBCPPFLAGS"
+ EXTRA_LNET_INCLUDE="$O2IBCPPFLAGS $EXTRA_LNET_INCLUDE"
+ LB_LINUX_TRY_COMPILE([
+ #include <linux/version.h>
+ #include <linux/pci.h>
+ #if !HAVE_GFP_T
+ typedef int gfp_t;
+ #endif
+ #include <rdma/rdma_cm.h>
+ #include <rdma/ib_cm.h>
+ #include <rdma/ib_verbs.h>
+ #include <rdma/ib_fmr_pool.h>
+ ],[
+ struct rdma_cm_id *cm_id;
+ struct rdma_conn_param conn_param;
+ struct ib_device_attr device_attr;
+ struct ib_qp_attr qp_attr;
+ struct ib_pool_fmr pool_fmr;
+ enum ib_cm_rej_reason rej_reason;
+
+ cm_id = rdma_create_id(NULL, NULL, RDMA_PS_TCP);
+ return PTR_ERR(cm_id);
+ ],[
+ AC_MSG_RESULT([yes])
+ O2IBLND="o2iblnd"
+ ],[
+ AC_MSG_RESULT([no])
+ 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]);;
+ *) AC_MSG_ERROR([internal error]);;
+ esac
+ O2IBLND=""
+ O2IBCPPFLAGS=""
+ ])
+
+ # version checking is a hack and isn't reliable,
+ # we need verify it with each new ofed release
+
+ if grep -q ib_dma_map_single \
+ ${O2IBPATH}/include/rdma/ib_verbs.h; then
+ if grep -q comp_vector \
+ ${O2IBPATH}/include/rdma/ib_verbs.h; then
+ IBLND_OFED_VERSION="1025"
+ else
+ IBLND_OFED_VERSION="1020"
+ fi
+ else
+ IBLND_OFED_VERSION="1010"
+ fi
+
+ AC_DEFINE_UNQUOTED(IBLND_OFED_VERSION, $IBLND_OFED_VERSION,
+ [OFED version])
+
+ EXTRA_KCFLAGS="$EXTRA_KCFLAGS_save"
+ fi
fi
+
+AC_SUBST(EXTRA_LNET_INCLUDE)
AC_SUBST(O2IBCPPFLAGS)
AC_SUBST(O2IBLND)
])
*) AC_MSG_ERROR([internal error]);;
esac
else
- case $ENABLEOPENIB in
+ case $ENABLEOPENIB in
1|2) OPENIBCPPFLAGS="-I$OPENIBPATH/include -DIN_TREE_BUILD";;
3) OPENIBCPPFLAGS="-I$OPENIBPATH/include";;
*) AC_MSG_RESULT([no])
#include <ts_ib_cm.h>
#include <ts_ib_sa_client.h>
],[
- struct ib_device_properties dev_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;
#include <ts_ib_cm.h>
#include <ts_ib_sa_client.h>
],[
- struct ib_device_properties dev_props;
+ struct ib_device_properties dev_props;
struct ib_cm_active_param cm_active_params;
tTS_IB_CLIENT_QUERY_TID tid;
int enum1 = TS_IB_QP_ATTRIBUTE_STATE;
EXTRA_KCFLAGS_save="$EXTRA_KCFLAGS"
EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS"
LB_LINUX_TRY_COMPILE([
- #include <linux/list.h>
+ #include <linux/list.h>
#include <asm/byteorder.h>
#ifdef __BIG_ENDIAN
# define CPU_BE 1
# define CPU_BE 0
# define CPU_LE 1
#endif
- #include <vverbs.h>
+ #include <vverbs.h>
#include <ib-cm.h>
#include <ibat.h>
],[
EXTRA_KCFLAGS="$EXTRA_KCFLAGS $VIBCPPFLAGS"
AC_MSG_CHECKING([if Voltaire still uses void * sg addresses])
LB_LINUX_TRY_COMPILE([
- #include <linux/list.h>
+ #include <linux/list.h>
#include <asm/byteorder.h>
#ifdef __BIG_ENDIAN
# define CPU_BE 1
# define CPU_BE 0
# define CPU_LE 1
#endif
- #include <vverbs.h>
+ #include <vverbs.h>
#include <ib-cm.h>
#include <ibat.h>
],[
# we export show_task(), but not all kernels have it (yet)
#
AC_DEFUN([LN_FUNC_SHOW_TASK],
-[AC_MSG_CHECKING([if kernel exports show_task])
-have_show_task=0
-for file in ksyms sched ; do
- if grep -q "EXPORT_SYMBOL(show_task)" \
- "$LINUX/kernel/$file.c" 2>/dev/null ; then
- have_show_task=1
- break
- fi
-done
-if test x$have_show_task = x1 ; then
- AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])
- AC_MSG_RESULT([yes])
-else
- AC_MSG_RESULT([no])
-fi
+[LB_CHECK_SYMBOL_EXPORT([show_task],
+[kernel/ksyms.c kernel/sched.c],[
+AC_DEFINE(HAVE_SHOW_TASK, 1, [show_task is exported])
+],[
+])
])
# LN_TASKLIST_LOCK
# 2.6.18 remove tasklist_lock export
AC_DEFUN([LN_TASKLIST_LOCK],
-[AC_MSG_CHECKING([kernel export tasklist_lock])
- if grep -q "EXPORT_SYMBOL(tasklist_lock)" \
- "$LINUX/kernel/fork.c" 2>/dev/null ; then
- AC_DEFINE(HAVE_TASKLIST_LOCK, 1,
- [tasklist_lock exported])
- AC_MSG_RESULT([yes])
- else
- AC_MSG_RESULT([no])
- fi
+[LB_CHECK_SYMBOL_EXPORT([tasklist_lock],
+[kernel/fork.c],[
+AC_DEFINE(HAVE_TASKLIST_LOCK, 1,
+ [tasklist_lock exported])
+],[
+])
])
# 2.6.19 API changes
-# kmem_cache_destroy(cachep) return void instead of
+# kmem_cache_destroy(cachep) return void instead of
# int
AC_DEFUN([LN_KMEM_CACHE_DESTROY_INT],
[AC_MSG_CHECKING([kmem_cache_destroy(cachep) return int])
])
])
-#2.6.19 API change
+# 2.6.19 API change
#panic_notifier_list use atomic_notifier operations
#
AC_DEFUN([LN_ATOMIC_PANIC_NOTIFIER],
[AC_MSG_CHECKING([panic_notifier_list is atomic])
LB_LINUX_TRY_COMPILE([
#include <linux/notifier.h>
- #include <linux/kernel.h>
+ #include <linux/kernel.h>
],[
struct atomic_notifier_head panic_notifier_list;
],[
])
])
+# 2.6.20 API change INIT_WORK use 2 args and not
+# store data inside
+AC_DEFUN([LN_3ARGS_INIT_WORK],
+[AC_MSG_CHECKING([check INIT_WORK want 3 args])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/workqueue.h>
+],[
+ struct work_struct work;
+
+ INIT_WORK(&work, NULL, NULL);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_3ARGS_INIT_WORK, 1,
+ [INIT_WORK use 3 args and store data inside])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+# 2.6.21 api change. 'register_sysctl_table' use only one argument,
+# instead of more old which need two.
+AC_DEFUN([LN_2ARGS_REGISTER_SYSCTL],
+[AC_MSG_CHECKING([check register_sysctl_table want 2 args])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/sysctl.h>
+],[
+ return register_sysctl_table(NULL,0);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_2ARGS_REGISTER_SYSCTL, 1,
+ [register_sysctl_table want 2 args])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+# 2.6.21 marks kmem_cache_t deprecated and uses struct kmem_cache
+# instead
+AC_DEFUN([LN_KMEM_CACHE],
+[AC_MSG_CHECKING([check kernel has struct kmem_cache])
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_LINUX_TRY_COMPILE([
+ #include <linux/slab.h>
+ typedef struct kmem_cache cache_t;
+],[
+ cache_t *cachep = NULL;
+
+ kmem_cache_alloc(cachep, 0);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_KMEM_CACHE, 1,
+ [kernel has struct kmem_cache])
+],[
+ AC_MSG_RESULT(NO)
+])
+EXTRA_KCFLAGS="$tmp_flags"
+])
+# 2.6.23 lost dtor argument
+AC_DEFUN([LN_KMEM_CACHE_CREATE_DTOR],
+[AC_MSG_CHECKING([check kmem_cache_create has dtor argument])
+LB_LINUX_TRY_COMPILE([
+ #include <linux/slab.h>
+],[
+ kmem_cache_create(NULL, 0, 0, 0, NULL, NULL);
+],[
+ AC_MSG_RESULT(yes)
+ AC_DEFINE(HAVE_KMEM_CACHE_CREATE_DTOR, 1,
+ [kmem_cache_create has dtor argument])
+],[
+ AC_MSG_RESULT(NO)
+])
+])
+
+# asm/segment.h does not exist on all architectures.
+# e.g. the file is empty for ia64 and does not exist for PPC.
+AC_DEFUN([LC_SEGMENT_H],
+ [LB_CHECK_FILE([$LINUX/include/asm/segment.h],
+ [AC_MSG_CHECKING([if asm/segment.h is present])
+ LB_LINUX_TRY_COMPILE([#include <asm/segment.h>], [],
+ [AC_MSG_RESULT([yes])
+ AC_DEFINE(HAVE_SEGMENT_H, 1,
+ [asm/segment.h exists])],
+ [AC_MSG_RESULT([no])])])
+]) # LC_SEGMENT_H
+
#
# LN_PROG_LINUX
#
# 2.6.19
LN_KMEM_CACHE_DESTROY_INT
LN_ATOMIC_PANIC_NOTIFIER
+# 2.6.20
+LN_3ARGS_INIT_WORK
+# 2.6.21
+LN_2ARGS_REGISTER_SYSCTL
+LN_KMEM_CACHE
+# 2.6.23
+LN_KMEM_CACHE_CREATE_DTOR
+# PPC/PPC64 support
+LC_SEGMENT_H
])
#
lnet/libcfs/linux/Makefile
lnet/lnet/Makefile
lnet/lnet/autoMakefile
+lnet/selftest/Makefile
+lnet/selftest/autoMakefile
lnet/ulnds/Makefile
lnet/ulnds/autoMakefile
lnet/ulnds/socklnd/Makefile