Skip to content

Commit 223d0b6

Browse files
mrgolinshijin-aws
authored andcommitted
[v2.2.x] prov/efa: Use IBV_QUERY_QP_DATA_IN_ORDER_DEVICE_ONLY flag when available
Add configure check and use the flag in ibv_query_qp_data_in_order() calls when available. This flag queries device-only data ordering capabilities without considering CPU architecture, needed for GPU polling scenarios. Reviewed-by: Daniel Kranzdorf <[email protected]> Signed-off-by: Michael Margolin <[email protected]> (cherry picked from commit 146b839)
1 parent 9f39f64 commit 223d0b6

File tree

2 files changed

+15
-2
lines changed

2 files changed

+15
-2
lines changed

prov/efa/configure.m4

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -75,6 +75,7 @@ AC_DEFUN([FI_EFA_CONFIGURE],[
7575
have_caps_cq_with_ext_mem_dmabuf=0
7676
have_ibv_is_fork_initialized=0
7777
efa_support_data_in_order_aligned_128_byte=0
78+
have_ibv_query_qp_data_in_order_device_only=0
7879
efadv_support_extended_cq=0
7980
have_efa_dmabuf_mr=0
8081
have_efadv_query_mr=0
@@ -123,6 +124,11 @@ AC_DEFUN([FI_EFA_CONFIGURE],[
123124
[efa_support_data_in_order_aligned_128_byte=0],
124125
[[#include <infiniband/verbs.h>]])
125126
127+
AC_CHECK_DECL([IBV_QUERY_QP_DATA_IN_ORDER_DEVICE_ONLY],
128+
[have_ibv_query_qp_data_in_order_device_only=1],
129+
[have_ibv_query_qp_data_in_order_device_only=0],
130+
[[#include <infiniband/verbs.h>]])
131+
126132
AC_CHECK_DECL([ibv_reg_dmabuf_mr],
127133
[have_efa_dmabuf_mr=1],
128134
[have_efa_dmabuf_mr=0],
@@ -224,6 +230,9 @@ AC_DEFUN([FI_EFA_CONFIGURE],[
224230
AC_DEFINE_UNQUOTED([HAVE_EFA_DATA_IN_ORDER_ALIGNED_128_BYTES],
225231
[$efa_support_data_in_order_aligned_128_byte],
226232
[Indicates if EFA supports 128 bytes in-order in writing.])
233+
AC_DEFINE_UNQUOTED([HAVE_IBV_QUERY_QP_DATA_IN_ORDER_DEVICE_ONLY],
234+
[$have_ibv_query_qp_data_in_order_device_only],
235+
[Indicates if IBV_QUERY_QP_DATA_IN_ORDER_DEVICE_ONLY flag is available.])
227236
AC_DEFINE_UNQUOTED([HAVE_EFA_DMABUF_MR],
228237
[$have_efa_dmabuf_mr],
229238
[Indicates if ibv_reg_dmabuf_mr verbs is available])

prov/efa/src/efa_base_ep.c

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -455,9 +455,13 @@ int efa_base_ep_getname(fid_t fid, void *addr, size_t *addrlen)
455455
bool efa_qp_support_op_in_order_aligned_128_bytes(struct efa_qp *qp, enum ibv_wr_opcode op)
456456
{
457457
int caps;
458+
uint32_t flags = IBV_QUERY_QP_DATA_IN_ORDER_RETURN_CAPS;
458459

459-
caps = ibv_query_qp_data_in_order(qp->ibv_qp, op,
460-
IBV_QUERY_QP_DATA_IN_ORDER_RETURN_CAPS);
460+
#if HAVE_IBV_QUERY_QP_DATA_IN_ORDER_DEVICE_ONLY
461+
flags |= IBV_QUERY_QP_DATA_IN_ORDER_DEVICE_ONLY;
462+
#endif
463+
464+
caps = ibv_query_qp_data_in_order(qp->ibv_qp, op, flags);
461465

462466
return !!(caps & IBV_QUERY_QP_DATA_IN_ORDER_ALIGNED_128_BYTES);
463467
}

0 commit comments

Comments
 (0)