Re: [PATCH rdma-core] mlx5: Return pointer to CQ doorbell

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



On Wed, Aug 23, 2017 at 10:52:21AM -0600, Jason Gunthorpe wrote:
> On Wed, Aug 23, 2017 at 07:45:55PM +0300, Leon Romanovsky wrote:
>
> > > Provide two implementations of mlx5dv_init_obj, one that has the
> > > historical behaviour that has existed until now of returning the
> > > void **uar and a new version that returns the 'void *' version
> > > renamed to arb_db.
> >
> > arb_db -> arm_db
>
> Oops, I fixed that, thanks.
>
> > Strange, in github it has 7 digits (the same was with rsocket fixes)
> > Fixes: c6e3439 ("mlx5: Return pointer to CQ doorbell")
>
> Yeah, side effect of github rendering it into a web link, I think.
>
> > The overall looks good, but I need to run checks with before
> > applying it.
>
> Sure, I didn't test it obviously, but the readelf is what I expect:
>
>    101: 000000000000e4d0    55 FUNC    GLOBAL DEFAULT   13 mlx5dv_init_obj@MLX5_1.0
>    168: 000000000000e4d0    55 FUNC    LOCAL  DEFAULT   13 __mlx5dv_init_obj_1_0
>    102: 000000000000e300   451 FUNC    GLOBAL DEFAULT   13 mlx5dv_init_obj@@MLX5_1.2
>    169: 000000000000e300   451 FUNC    LOCAL  DEFAULT   13 __mlx5dv_init_obj_1_2

It is not complete output as I would expect to see. It doesn't have
mlx5dv_init_obj (without explicit @MLX5_1.2). There is a need to declare default
function name for the static linking has no knowledge of versions.

The simplest approach which is used in whole rdma-core is just retain
the original function name and the patch below on top of your patch
achieves it.

diff --git a/providers/mlx5/mlx5.c b/providers/mlx5/mlx5.c
index 7ec5951b..49dd4f12 100644
--- a/providers/mlx5/mlx5.c
+++ b/providers/mlx5/mlx5.c
@@ -716,8 +716,7 @@ static int mlx5dv_get_srq(struct ibv_srq *srq_in,
 	return 0;
 }

-int __mlx5dv_init_obj_1_2(struct mlx5dv_obj *obj, uint64_t obj_type);
-int __mlx5dv_init_obj_1_2(struct mlx5dv_obj *obj, uint64_t obj_type)
+int mlx5dv_init_obj(struct mlx5dv_obj *obj, uint64_t obj_type)
 {
 	int ret = 0;

@@ -732,14 +731,13 @@ int __mlx5dv_init_obj_1_2(struct mlx5dv_obj *obj, uint64_t obj_type)

 	return ret;
 }
-asm(".symver __mlx5dv_init_obj_1_2, mlx5dv_init_obj@@MLX5_1.2");

 int __mlx5dv_init_obj_1_0(struct mlx5dv_obj *obj, uint64_t obj_type);
 int __mlx5dv_init_obj_1_0(struct mlx5dv_obj *obj, uint64_t obj_type)
 {
 	int ret = 0;

-	ret = __mlx5dv_init_obj_1_2(obj, obj_type);
+	ret = mlx5dv_init_obj(obj, obj_type);
 	if (!ret && (obj_type & MLX5DV_OBJ_CQ)) {
 		/* ABI version 1.0 returns the void ** in this memory
 		 * location

------

➜  rdma-core git:(tst-uar) ✗ readelf -s build/lib/libmlx5.so |grep -i mlx5dv_init
    99: 000000000000dab0    55 FUNC    GLOBAL DEFAULT   13 mlx5dv_init_obj@MLX5_1.0
   165: 000000000000dab0    55 FUNC    LOCAL  DEFAULT   13 __mlx5dv_init_obj_1_0
   194: 000000000000d8f0   443 FUNC    LOCAL  DEFAULT   13 mlx5dv_init_obj
   268: 000000000000dab0    55 FUNC    GLOBAL DEFAULT   13 mlx5dv_init_obj@MLX5_1.0


>
> Jason
> --
> To unsubscribe from this list: send the line "unsubscribe linux-rdma" in
> the body of a message to majordomo@xxxxxxxxxxxxxxx
> More majordomo info at  http://vger.kernel.org/majordomo-info.html

Attachment: signature.asc
Description: PGP signature


[Index of Archives]     [Linux USB Devel]     [Video for Linux]     [Linux Audio Users]     [Photo]     [Yosemite News]     [Yosemite Photos]     [Linux Kernel]     [Linux SCSI]     [XFree86]
  Powered by Linux