@@ -4,6 +4,8 @@ libmlx4.so.1 ibverbs-providers #MINVER#
libmlx5.so.1 ibverbs-providers #MINVER#
MLX5_1.0@MLX5_1.0 13
MLX5_1.1@MLX5_1.1 14
+ MLX5_1.2@MLX5_1.2 15
mlx5dv_init_obj@MLX5_1.0 13
+ mlx5dv_init_obj@MLX5_1.2 15
mlx5dv_query_device@MLX5_1.0 13
mlx5dv_create_cq@MLX5_1.1 14
@@ -11,7 +11,7 @@ if (MLX5_MW_DEBUG)
endif()
rdma_shared_provider(mlx5 libmlx5.map
- 1 1.1.${PACKAGE_VERSION}
+ 1 1.2.${PACKAGE_VERSION}
buf.c
cq.c
dbrec.c
@@ -11,3 +11,8 @@ MLX5_1.1 {
global:
mlx5dv_create_cq;
} MLX5_1.0;
+
+MLX5_1.2 {
+ global:
+ mlx5dv_init_obj;
+} MLX5_1.1;
@@ -42,6 +42,8 @@
#include <sched.h>
#include <sys/param.h>
+#include <util/symver.h>
+
#include "mlx5.h"
#include "mlx5-abi.h"
@@ -678,7 +680,7 @@ static int mlx5dv_get_cq(struct ibv_cq *cq_in,
cq_out->cqe_size = mcq->cqe_sz;
cq_out->buf = mcq->active_buf->buf;
cq_out->dbrec = mcq->dbrec;
- cq_out->uar = mctx->uar[0];
+ cq_out->arm_db = mctx->uar[0];
mcq->flags |= MLX5_CQ_FLAGS_DV_OWNED;
@@ -716,7 +718,9 @@ static int mlx5dv_get_srq(struct ibv_srq *srq_in,
return 0;
}
-int mlx5dv_init_obj(struct mlx5dv_obj *obj, uint64_t obj_type)
+LATEST_SYMVER_FUNC(mlx5dv_init_obj, 1_2, "MLX5_1.2",
+ int,
+ struct mlx5dv_obj *obj, uint64_t obj_type)
{
int ret = 0;
@@ -732,6 +736,22 @@ int mlx5dv_init_obj(struct mlx5dv_obj *obj, uint64_t obj_type)
return ret;
}
+COMPAT_SYMVER_FUNC(mlx5dv_init_obj, 1_0, "MLX5_1.0",
+ int,
+ struct mlx5dv_obj *obj, uint64_t obj_type)
+{
+ int ret = 0;
+
+ ret = __mlx5dv_init_obj_1_2(obj, obj_type);
+ if (!ret && (obj_type & MLX5DV_OBJ_CQ)) {
+ /* ABI version 1.0 returns the void ** in this memory
+ * location
+ */
+ obj->cq.out->arm_db = to_mctx(obj->cq.in->context)->uar;
+ }
+ return ret;
+}
+
static void adjust_uar_info(struct mlx5_device *mdev,
struct mlx5_context *context,
struct mlx5_alloc_ucontext_resp resp)
@@ -129,7 +129,7 @@ struct mlx5dv_cq {
__be32 *dbrec;
uint32_t cqe_cnt;
uint32_t cqe_size;
- void *uar;
+ void *arm_db;
uint32_t cqn;
uint64_t comp_mask;
};