diff --git a/src/mca/ptl/elan/Makefile.am b/src/mca/ptl/elan/Makefile.am index 85e51edfec..2956bb2218 100644 --- a/src/mca/ptl/elan/Makefile.am +++ b/src/mca/ptl/elan/Makefile.am @@ -8,7 +8,7 @@ include $(top_ompi_srcdir)/config/Makefile.options AM_CPPFLAGS = -I$(top_ompi_builddir)/src/include \ -I$(top_ompi_srcdir)/src -I$(top_ompi_srcdir)/src/include \ - -I/usr/lib/qsnet/elan4/include + -I/usr/lib/qsnet/elan4/include SUBDIRS = src tests diff --git a/src/mca/ptl/elan/configure.stub b/src/mca/ptl/elan/configure.stub index c406972d71..a8d384def5 100644 --- a/src/mca/ptl/elan/configure.stub +++ b/src/mca/ptl/elan/configure.stub @@ -9,6 +9,23 @@ # AC_DEFUN([MCA_CONFIGURE_STUB],[ + AC_ARG_WITH(ptl-elan-qsnet-headers, + AC_HELP_STRING([--with-ptl-elan-qsnet-headers=DIR], + [The path to qsnet header files, default /usr ])) + + EXTRA_CPPFLAGS= + if test -n "$with_ptl_elan_qsnet_headers"; then + EXTRA_CPPFLAGS="-I$with_ptl_elan_qsnet_headers/include/" + else + EXTRA_CPPFLAGS="-I/usr/include/" + AC_MSG_WARN([*** Warning: using default qsnet header path /usr/include]) + fi + + # See if we can find a sample kernel header + CPPFLAGS="$EXTRA_CPPFLAGS $CPPFLAGS " + AC_CHECK_HEADERS([qsnet/autoconf.h],, + [AC_MSG_ERROR([*** Cannot find qsnet header files, e.g., autoconf.h])]) + # Look for a bunch of libraries; abort if we don't have them PTL_ELAN_LIBS="$LIBS" pairs="rmscall:rms_getcap elan:elan_init elan4:elan4_init" @@ -53,7 +70,7 @@ AC_DEFUN([MCA_CONFIGURE_STUB],[ AC_MSG_WARN([*** Need path to qsnet2 library source; please use --with-ptl-elan-qs2netlibsrc=/path/to/qsnet2/source]) AC_MSG_ERROR([Cannot continue]) else - CPPFLAGS="-I${QSNET2SRC}/include -I${QSNET2SRC}/elan4lib/include -I${QSNET2SRC}/elan4lib/elan4 -I${QSNET2SRC}/elan4lib/common" + CPPFLAGS="$CPPFLAGS -I${QSNET2SRC}/include -I${QSNET2SRC}/elan4lib/include -I${QSNET2SRC}/elan4lib/elan4 -I${QSNET2SRC}/elan4lib/common" fi AC_SUBST(LIBS) diff --git a/src/mca/ptl/elan/src/ptl_elan_comm_init.c b/src/mca/ptl/elan/src/ptl_elan_comm_init.c index 7263173769..c0a8e9546a 100644 --- a/src/mca/ptl/elan/src/ptl_elan_comm_init.c +++ b/src/mca/ptl/elan/src/ptl_elan_comm_init.c @@ -388,7 +388,10 @@ ompi_init_elan_qdma (mca_ptl_elan_component_t * emp, RESETEVENT_WORD (&rxq->qr_doneWord); PRIMEEVENT_WORD (ctx, (EVENT *) rxq->qr_elanDone, 1); - rxq->qr_cmdq = elan4_alloc_cmdq (ctx, rail->r_alloc, + rxq->qr_cmdq = elan4_alloc_cmdq (ctx, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) + rail->r_alloc, +#endif CQ_Size1K, CQ_WriteEnableBit | CQ_WaitEventEnableBit, NULL); @@ -424,7 +427,9 @@ ompi_init_elan_qdma (mca_ptl_elan_component_t * emp, OMPI_PTL_ELAN_CHECK_UNEX (queue->input, NULL, OMPI_ERROR, 0); queue->tx_cmdq = elan4_alloc_cmdq (ctx, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) rail->r_alloc, +#endif CQ_Size8K, CQ_WriteEnableBit | CQ_DmaStartEnableBit | @@ -495,7 +500,10 @@ ompi_init_elan_qdma (mca_ptl_elan_component_t * emp, RESETEVENT_WORD (&rxq->qr_doneWord); PRIMEEVENT_WORD (ctx, (EVENT *) rxq->qr_elanDone, 1); - rxq->qr_cmdq = elan4_alloc_cmdq (ctx, rail->r_alloc, + rxq->qr_cmdq = elan4_alloc_cmdq (ctx, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) + rail->r_alloc, +#endif CQ_Size1K, CQ_WriteEnableBit | CQ_WaitEventEnableBit, NULL); @@ -549,10 +557,16 @@ ompi_init_elan_putget (mca_ptl_elan_component_t * emp, /* construct the lock variable */ OBJ_CONSTRUCT (&putget->pg_lock, ompi_mutex_t); - cqp = elan4_probe_cmdq(ctx, rail->r_alloc, 0x10, CQ_AutoCtrlFlowOn); + cqp = elan4_probe_cmdq(ctx, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) + rail->r_alloc, +#endif + 0x10, CQ_AutoCtrlFlowOn); putget->put_cmdq = elan4_alloc_cmdq(ctx, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) rail->r_alloc, +#endif CQ_Size8K, CQ_WriteEnableBit | CQ_DmaStartEnableBit | @@ -561,7 +575,9 @@ ompi_init_elan_putget (mca_ptl_elan_component_t * emp, OMPI_PTL_ELAN_CHECK_UNEX (putget->put_cmdq, NULL, OMPI_ERROR, 0); putget->get_cmdq = elan4_alloc_cmdq(ctx, - rail->r_alloc, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) + rail->r_alloc, +#endif CQ_Size8K, CQ_WriteEnableBit | CQ_STENEnableBit | diff --git a/src/mca/ptl/elan/src/ptl_elan_init.c b/src/mca/ptl/elan/src/ptl_elan_init.c index dc9ca91db3..c47b516583 100644 --- a/src/mca/ptl/elan/src/ptl_elan_init.c +++ b/src/mca/ptl/elan/src/ptl_elan_init.c @@ -157,8 +157,6 @@ ompi_elan_attach_network (mca_ptl_elan_state_t * ems) /* Allocate a cookie pool for the thread processor * and copy to sdram */ rail->r_cpool = elan4_allocCookiePool (rail->r_ctx, ems->elan_vp); - ((ELAN_EPRIVSTATE *) rail->r_estate)->tcookie = - rail->r_cpool->cp_cookie; } loc = elan_vp2location (ems->elan_vp, ems->elan_cap); @@ -287,7 +285,10 @@ ompi_init_elan_sleepdesc (mca_ptl_elan_state_t * ems, OMPI_PTL_ELAN_CHECK_UNEX (es->es_cmdBlk, 0, NULL, 0); /*Allocate a pair of command queues for blocking waits with */ - es->es_cmdq = elan4_alloc_cmdq (rail->r_ctx, rail->r_alloc, + es->es_cmdq = elan4_alloc_cmdq (rail->r_ctx, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) + rail->r_alloc, +#endif CQ_Size1K, CQ_WriteEnableBit | CQ_WaitEventEnableBit, NULL); @@ -296,8 +297,13 @@ ompi_init_elan_sleepdesc (mca_ptl_elan_state_t * ems, /* This command queue used to fire the IRQ via a cmd port copy event */ es->es_ecmdq = elan4_alloc_cmdq (rail->r_ctx, - rail->r_alloc, CQ_Size1K, /* CQ_EnableAllBits, */ - CQ_WriteEnableBit | CQ_InterruptEnableBit, NULL); +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) + rail->r_alloc, +#endif + CQ_Size1K, /* CQ_EnableAllBits, */ + CQ_WriteEnableBit + | CQ_InterruptEnableBit, + NULL); OMPI_PTL_ELAN_CHECK_UNEX (es->es_ecmdq, NULL, NULL, 0); es->es_next = NULL; @@ -454,7 +460,9 @@ ompi_mca_ptl_elan_init (mca_ptl_elan_component_t * emp) /* Allocate a command port for non sten functions etc */ rail->r_cmdq = elan4_alloc_cmdq (rail->r_ctx, - rail->r_alloc, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) + rail->r_alloc, +#endif CQ_Size8K, CQ_ModifyEnableBit | CQ_WriteEnableBit | @@ -464,8 +472,12 @@ ompi_mca_ptl_elan_init (mca_ptl_elan_component_t * emp) OMPI_PTL_ELAN_CHECK_UNEX (rail->r_cmdq, NULL, OMPI_ERROR, 0); /* Allocate a command port for thread rescheduling etc */ - rail->r_ecmdq = elan4_alloc_cmdq (rail->r_ctx, rail->r_alloc, - CQ_Size8K, CQ_EnableAllBits, + rail->r_ecmdq = elan4_alloc_cmdq (rail->r_ctx, +#if QSNETLIBS_VERSION_CODE <= QSNETLIBS_VERSION(1,6,4) + rail->r_alloc, +#endif + CQ_Size8K, + CQ_EnableAllBits, NULL); OMPI_PTL_ELAN_CHECK_UNEX (rail->r_ecmdq, NULL, OMPI_ERROR, 0);