AS_IF([test $ENABLEO2IB = "no"], [
AC_MSG_RESULT([no])
+ AC_DEFUN([LN_CONFIG_O2IB_SRC], [])
+ AC_DEFUN([LN_CONFIG_O2IB_RESULTS], [])
], [
o2ib_found=false
for O2IBPATH in $O2IBPATHS; do
AS_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 \)], [
+ -f ${O2IBPATH}/include/rdma/ib_verbs.h \)], [
o2ib_found=true
break
])
#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_idi __attribute__ ((unused));
struct rdma_conn_param conn_param __attribute__ ((unused));
struct ib_device_attr device_attr __attribute__ ((unused));
struct ib_qp_attr qp_attr __attribute__ ((unused));
- struct ib_pool_fmr pool_fmr __attribute__ ((unused));
enum ib_cm_rej_reason rej_reason __attribute__ ((unused));
rdma_destroy_id(NULL);
],[
AS_IF([test $ENABLEO2IB != "no"], [
EXTRA_CHECK_INCLUDE="$EXTRA_OFED_CONFIG $EXTRA_OFED_INCLUDE"
+ KBUILD_EXTRA_SYMBOLS="$KBUILD_EXTRA_SYMBOLS $O2IBPATH/Module.symvers"
# 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],
# 5.1
LN_IB_SG_DMA_ADDRESS_EXISTS
+ # A reason argument was added to rdma_reject() in Linux 5.8,
+ # commit 8094ba0ace7f6cd1e31ea8b151fba3594cadfa9a
+ LB_CHECK_COMPILE([if 4arg 'rdma_reject' exists],
+ rdma_reject, [
+ #ifdef HAVE_COMPAT_RDMA
+ #undef PACKAGE_NAME
+ #undef PACKAGE_TARNAME
+ #undef PACKAGE_VERSION
+ #undef PACKAGE_STRING
+ #undef PACKAGE_BUGREPORT
+ #undef PACKAGE_URL
+ #include <linux/compat-2.6.h>
+ #endif
+ #include <rdma/ib_verbs.h>
+ #include <rdma/ib_cm.h>
+ #include <rdma/rdma_cm.h>
+ ],[
+ rdma_reject(NULL, NULL, 0, 0);
+ ],[
+ AC_DEFINE(HAVE_RDMA_REJECT_4ARGS, 1,
+ [rdma_reject has 4 arguments])
+ ])
+
+ # The FMR pool API was removed in Linux 5.8,
+ # commit 4e373d5417ecbb4f438a8500f0379a2fc29c2643
+ LB_CHECK_COMPILE([if FMR pools API available],
+ ib_fmr, [
+ #include <rdma/ib_verbs.h>
+ ],[
+ struct ib_fmr fmr = {};
+ ],[
+ AC_DEFINE(HAVE_FMR_POOL_API, 1,
+ [FMR pool API is available])
+ ])
+
+ # rdma_connect_locked() was added in Linux 5.10,
+ # commit 071ba4cc559de47160761b9500b72e8fa09d923d
+ # and in MOFED-5.2-2. rdma_connect_locked() must
+ # be called instead of rdma_connect() in
+ # RDMA_CM_EVENT_ROUTE_RESOLVED handler.
+ LB_CHECK_COMPILE([if 'rdma_connect_locked' exists],
+ rdma_connect_locked, [
+ #include <rdma/rdma_cm.h>
+ ],[
+ rdma_connect_locked(NULL, NULL);
+ ],[
+ AC_DEFINE(HAVE_RDMA_CONNECT_LOCKED, 1,
+ [rdma_connect_locked is defined])
+ ])
+
+ # ethtool_link_settings was added in Linux 4.6
+ LB_CHECK_COMPILE([if 'ethtool_link_settings' exists],
+ ethtool_link_settings, [
+ #include <linux/ethtool.h>
+ ],[
+ struct ethtool_link_ksettings cmd;
+ ],[
+ AC_DEFINE(HAVE_ETHTOOL_LINK_SETTINGS, 1,
+ [ethtool_link_settings is defined])
+ ])
+
EXTRA_CHECK_INCLUDE=""
+ AC_DEFUN([LN_CONFIG_O2IB_SRC], [])
+ AC_DEFUN([LN_CONFIG_O2IB_RESULTS], [])
]) # ENABLEO2IB != "no"
]) # LN_CONFIG_O2IB
]) # LN_EXPORT_KMAP_TO_PAG
#
+# LN_HAVE_HYPERVISOR_IS_TYPE
+#
+# 4.14 commit 79cc74155218316b9a5d28577c7077b2adba8e58
+# x86/paravirt: Provide a way to check for hypervisors
+#
+AC_DEFUN([LN_HAVE_HYPERVISOR_IS_TYPE], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if hypervisor_is_type function is available],
+hypervisor_is_type_exists, [
+ #include <asm/hypervisor.h>
+],[
+ (void)hypervisor_is_type(X86_HYPER_NATIVE);
+],[
+ AC_DEFINE(HAVE_HYPERVISOR_IS_TYPE, 1,
+ [hypervisor_is_type function exists])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LN_HAVE_HYPERVISOR_IS_TYPE
+
+#
# LN_HAVE_ORACLE_OFED_EXTENSIONS
#
# Oracle UEK 5
]) # LN_CONFIG_SOCK_GETNAME
#
+# LN_HAVE_IN_DEV_FOR_EACH_IFA_RTNL
+#
+# kernel 5.3 commit ef11db3310e272d3d8dbe8739e0770820dd20e52
+# and kernel 4.18.0-193.el8:
+# added in_dev_for_each_ifa_rtnl and in_dev_for_each_ifa_rcu
+# and removed for_ifa and endfor_ifa.
+# Use the _rntl variant as the current locking is rtnl.
+#
+AC_DEFUN([LN_HAVE_IN_DEV_FOR_EACH_IFA_RTNL], [
+tmp_flags="$EXTRA_KCFLAGS"
+EXTRA_KCFLAGS="-Werror"
+LB_CHECK_COMPILE([if 'in_dev_for_each_ifa_rtnl' is defined],
+in_dev_for_each_ifa_rtnl_test, [
+ #include <linux/inetdevice.h>
+],[
+ const struct in_ifaddr *ifa = NULL;
+ struct in_device *in_dev = NULL;
+
+ in_dev_for_each_ifa_rtnl(ifa, in_dev) {}
+],[
+ AC_DEFINE(HAVE_IN_DEV_FOR_EACH_IFA_RTNL, 1,
+ ['in_dev_for_each_ifa_rtnl' is defined])
+])
+EXTRA_KCFLAGS="$tmp_flags"
+]) # LN_HAVE_IN_DEV_FOR_EACH_IFA_RTNL
+
+#
# LN_IB_DEVICE_OPS_EXISTS
#
# kernel 5.0 commit 521ed0d92ab0db3edd17a5f4716b7f698f4fce61
]) # LN_IB_SG_DMA_ADDRESS_EXISTS
#
+# LN_USR_RDMA
+#
+#
+AC_DEFUN([LN_USR_RDMA], [
+AC_MSG_CHECKING([if RDMA_PS_TCP exists])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ #include <rdma/rdma_user_cm.h>
+
+ int main(void) {
+ int x = (int)RDMA_PS_TCP;
+ return x;
+ }
+])],[
+ AC_DEFINE(HAVE_USRSPC_RDMA_PS_TCP, 1,
+ [RDMA_PS_TCP exists])
+])
+]) # LN_USR_RDMA
+
+
+AC_DEFUN([LN_PROG_LINUX_SRC], [])
+AC_DEFUN([LN_PROG_LINUX_RESULTS], [])
+
+#
# LN_PROG_LINUX
#
# LNet linux kernel checks
# 4.x
LN_CONFIG_SOCK_CREATE_KERN
# 4.14
+LN_HAVE_HYPERVISOR_IS_TYPE
LN_HAVE_ORACLE_OFED_EXTENSIONS
# 4.17
LN_CONFIG_SOCK_GETNAME
+# 5.3 and 4.18.0-193.el8
+LN_HAVE_IN_DEV_FOR_EACH_IFA_RTNL
]) # LN_PROG_LINUX
#
AC_MSG_NOTICE([LNet core checks
==============================================================================])
+# lnet/utils/lnetconfig/liblnetconfig_netlink.c
+AS_IF([test "x$enable_dist" = xno], [
+ PKG_CHECK_MODULES(LIBNL3, [libnl-genl-3.0 >= 3.1])
+])
+
+AC_CHECK_LIB([nl-3], [nla_get_s32], [
+ AC_DEFINE(HAVE_NLA_GET_S32, 1,
+ [libnl3 supports nla_get_s32])
+ ], [
+])
+
+AC_CHECK_LIB([nl-3], [nla_get_s64], [
+ AC_DEFINE(HAVE_NLA_GET_S64, 1,
+ [libnl3 supports nla_get_s64])
+ ], [
+])
+
+#
+# LN_USR_NLMSGERR
+#
+AC_DEFUN([LN_USR_NLMSGERR], [
+AC_MSG_CHECKING([if 'enum nlmsgerr_attrs' exists])
+AC_COMPILE_IFELSE([AC_LANG_SOURCE([
+ #include <linux/netlink.h>
+
+ int main(void) {
+ int x = (int)NLMSGERR_ATTR_MAX;
+ return x;
+ }
+])],[
+ AC_DEFINE(HAVE_USRSPC_NLMSGERR, 1,
+ ['enum nlmsgerr_attrs' exists])
+])
+]) # LN_USR_NLMGSERR
+
# lnet/utils/portals.c
AC_CHECK_HEADERS([netdb.h])
AC_CHECK_FUNCS([gethostbyname])
AC_SUBST(LIBEFENCE)
LN_CONFIG_DLC
+LN_USR_RDMA
+LN_USR_NLMSGERR
]) # LN_CONFIGURE
#