Skip to content

Commit 92ad54b

Browse files
sheftyrleon
authored andcommitted
libibverbs: Rename ibv_reg_mr_in to ibv_mr_init_attr
Rename the structure and input parameter to align with other libibverbs API calls. Signed-off-by: Sean Hefty <shefty@nvidia.com>
1 parent b503436 commit 92ad54b

File tree

8 files changed

+55
-48
lines changed

8 files changed

+55
-48
lines changed

libibverbs/cmd_mr.c

Lines changed: 22 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -158,49 +158,51 @@ int ibv_cmd_reg_dmabuf_mr(struct ibv_pd *pd, uint64_t offset, size_t length,
158158
}
159159

160160
int ibv_cmd_reg_mr_ex(struct ibv_pd *pd, struct verbs_mr *vmr,
161-
struct ibv_reg_mr_in *in)
161+
struct ibv_mr_init_attr *mr_init_attr)
162162
{
163163
DECLARE_COMMAND_BUFFER(cmdb, UVERBS_OBJECT_MR,
164164
UVERBS_METHOD_REG_MR, 11);
165-
bool fd_based = (in->comp_mask & IBV_REG_MR_MASK_FD);
165+
bool fd_based = (mr_init_attr->comp_mask & IBV_REG_MR_MASK_FD);
166166
struct ib_uverbs_attr *handle;
167-
uint64_t length = in->length;
167+
uint64_t length = mr_init_attr->length;
168168
uint32_t lkey, rkey;
169169
int ret;
170170

171171
if (fd_based) {
172-
if (!(in->comp_mask & IBV_REG_MR_MASK_FD_OFFSET) ||
173-
(in->comp_mask & IBV_REG_MR_MASK_ADDR)) {
172+
if (!(mr_init_attr->comp_mask & IBV_REG_MR_MASK_FD_OFFSET) ||
173+
(mr_init_attr->comp_mask & IBV_REG_MR_MASK_ADDR)) {
174174
errno = EINVAL;
175175
return EINVAL;
176176
}
177-
fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_MR_FD_OFFSET, in->fd_offset);
177+
fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_MR_FD_OFFSET,
178+
mr_init_attr->fd_offset);
178179
fill_attr_in_fd(cmdb, UVERBS_ATTR_REG_MR_FD,
179-
in->fd);
180+
mr_init_attr->fd);
180181
} else {
181-
if ((in->comp_mask & IBV_REG_MR_MASK_FD_OFFSET) ||
182-
!(in->comp_mask & IBV_REG_MR_MASK_ADDR)) {
182+
if ((mr_init_attr->comp_mask & IBV_REG_MR_MASK_FD_OFFSET) ||
183+
!(mr_init_attr->comp_mask & IBV_REG_MR_MASK_ADDR)) {
183184
errno = EINVAL;
184185
return EINVAL;
185186
}
186187

187-
fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_MR_ADDR, (uintptr_t)in->addr);
188-
if (in->access & IBV_ACCESS_ON_DEMAND) {
189-
if (in->length == SIZE_MAX && in->addr) {
188+
fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_MR_ADDR,
189+
(uintptr_t) mr_init_attr->addr);
190+
if (mr_init_attr->access & IBV_ACCESS_ON_DEMAND) {
191+
if (mr_init_attr->length == SIZE_MAX && mr_init_attr->addr) {
190192
errno = EINVAL;
191193
return EINVAL;
192194
}
193-
if (in->length == SIZE_MAX)
195+
if (mr_init_attr->length == SIZE_MAX)
194196
length = UINT64_MAX;
195197
}
196198
}
197199

198-
if (in->comp_mask & IBV_REG_MR_MASK_IOVA) {
199-
fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_MR_IOVA, in->iova);
200+
if (mr_init_attr->comp_mask & IBV_REG_MR_MASK_IOVA) {
201+
fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_MR_IOVA, mr_init_attr->iova);
200202
} else {
201203
if (!fd_based) {
202204
fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_MR_IOVA,
203-
(uintptr_t)in->addr);
205+
(uintptr_t) mr_init_attr->addr);
204206
} else {
205207
/* iova is a must from kernel point of view */
206208
errno = EINVAL;
@@ -213,11 +215,12 @@ int ibv_cmd_reg_mr_ex(struct ibv_pd *pd, struct verbs_mr *vmr,
213215
fill_attr_out_ptr(cmdb, UVERBS_ATTR_REG_MR_RESP_RKEY, &rkey);
214216
fill_attr_in_obj(cmdb, UVERBS_ATTR_REG_MR_PD_HANDLE, pd->handle);
215217
fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_MR_LENGTH, length);
216-
fill_attr_in_uint32(cmdb, UVERBS_ATTR_REG_MR_ACCESS_FLAGS, in->access);
218+
fill_attr_in_uint32(cmdb, UVERBS_ATTR_REG_MR_ACCESS_FLAGS,
219+
mr_init_attr->access);
217220

218-
if (in->comp_mask & IBV_REG_MR_MASK_DMAH)
221+
if (mr_init_attr->comp_mask & IBV_REG_MR_MASK_DMAH)
219222
fill_attr_in_obj(cmdb, UVERBS_ATTR_REG_MR_DMA_HANDLE,
220-
verbs_get_dmah(in->dmah)->handle);
223+
verbs_get_dmah(mr_init_attr->dmah)->handle);
221224

222225
ret = execute_ioctl(pd->context, cmdb);
223226
if (ret)

libibverbs/driver.h

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -466,7 +466,8 @@ struct verbs_context_ops {
466466
int fd, int access);
467467
struct ibv_mr *(*reg_mr)(struct ibv_pd *pd, void *addr, size_t length,
468468
uint64_t hca_va, int access);
469-
struct ibv_mr *(*reg_mr_ex)(struct ibv_pd *pd, struct ibv_reg_mr_in *in);
469+
struct ibv_mr *(*reg_mr_ex)(struct ibv_pd *pd,
470+
struct ibv_mr_init_attr *mr_init_attr);
470471
int (*req_notify_cq)(struct ibv_cq *cq, int solicited_only);
471472
int (*rereg_mr)(struct verbs_mr *vmr, int flags, struct ibv_pd *pd,
472473
void *addr, size_t length, int access);
@@ -590,7 +591,7 @@ int ibv_cmd_reg_dmabuf_mr(struct ibv_pd *pd, uint64_t offset, size_t length,
590591
struct verbs_mr *vmr,
591592
struct ibv_command_buffer *driver);
592593
int ibv_cmd_reg_mr_ex(struct ibv_pd *pd, struct verbs_mr *vmr,
593-
struct ibv_reg_mr_in *in);
594+
struct ibv_mr_init_attr *mr_init_attr);
594595
int ibv_cmd_alloc_mw(struct ibv_pd *pd, enum ibv_mw_type type,
595596
struct ibv_mw *mw, struct ibv_alloc_mw *cmd,
596597
size_t cmd_size,

libibverbs/dummy_ops.c

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -461,7 +461,8 @@ static struct ibv_mr *reg_mr(struct ibv_pd *pd, void *addr, size_t length,
461461
return NULL;
462462
}
463463

464-
static struct ibv_mr *reg_mr_ex(struct ibv_pd *pd, struct ibv_reg_mr_in *in)
464+
static struct ibv_mr *reg_mr_ex(struct ibv_pd *pd,
465+
struct ibv_mr_init_attr *mr_init_attr)
465466
{
466467
errno = EOPNOTSUPP;
467468
return NULL;

libibverbs/man/ibv_reg_mr.3

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,7 @@ ibv_reg_mr, ibv_reg_mr_iova, ibv_reg_dmabuf_mr, ibv_reg_mr_ex, ibv_dereg_mr \- r
1919
.BI " size_t " "length" ", uint64_t " "iova" ,
2020
.BI " int " "fd" ", int " "access" );
2121
.sp
22-
.BI "struct ibv_mr *ibv_reg_mr_ex(struct ibv_pd " "*pd" ", struct ibv_reg_mr_in " in" );
22+
.BI "struct ibv_mr *ibv_reg_mr_ex(struct ibv_pd " "*pd" ", struct ibv_mr_init_attr "*mr_init_attr" );
2323
.sp
2424
.BI "int ibv_dereg_mr(struct ibv_mr " "*mr" );
2525
.fi
@@ -124,10 +124,10 @@ describes the desired memory protection attributes; it is similar to the ibv_reg
124124
.B ibv_reg_mr_ex()
125125
ibv_reg_mr_ex is a an API that enables all the variants of the other ibv_reg_mr_xxx() that desecibed in that man page.
126126
It has the
127-
.I in->comp_mask
127+
.I mr_init_attr->comp_mask
128128
field to let application mark which fields are applicable.
129129
In addition, it includes the
130-
.I in->dmah
130+
.I mr_init_attr->dmah
131131
which can be used to include an ibv_dmah object that will be used for that MR.
132132
The other fields on the input pointer have the same meaning as of the fields that described in that man page for the other verbs.
133133
.PP
@@ -153,7 +153,7 @@ returns 0 on success, or the value of errno on failure (which indicates the fail
153153
.B ibv_dereg_mr()
154154
fails if any memory window is still bound to this MR.
155155
.B ibv_dereg_mr_ex()
156-
One among in->fd and in->addr is required, both can't come together.
156+
One among mr_init_attr->fd and mr_init_attr->addr is required, both can't come together.
157157
.SH "SEE ALSO"
158158
.BR ibv_alloc_pd (3),
159159
.BR ibv_post_send (3),

libibverbs/verbs.c

Lines changed: 14 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -430,37 +430,38 @@ struct ibv_mr *ibv_reg_dmabuf_mr(struct ibv_pd *pd, uint64_t offset,
430430
return mr;
431431
}
432432

433-
struct ibv_mr *ibv_reg_mr_ex(struct ibv_pd *pd, struct ibv_reg_mr_in *in)
433+
/* Note: mr_init_attr may be modified during this call */
434+
struct ibv_mr *ibv_reg_mr_ex(struct ibv_pd *pd, struct ibv_mr_init_attr *mr_init_attr)
434435
{
435436
struct verbs_device *device = verbs_get_device(pd->context->device);
436437
struct ibv_mr *mr;
437-
int in_access = in->access;
438-
bool need_fork = !((in->access & IBV_ACCESS_ON_DEMAND) ||
439-
(in->comp_mask & IBV_REG_MR_MASK_FD));
438+
int in_access = mr_init_attr->access;
439+
bool need_fork = !((mr_init_attr->access & IBV_ACCESS_ON_DEMAND) ||
440+
(mr_init_attr->comp_mask & IBV_REG_MR_MASK_FD));
440441

441-
if (need_fork && ibv_dontfork_range(in->addr, in->length))
442+
if (need_fork && ibv_dontfork_range(mr_init_attr->addr, mr_init_attr->length))
442443
return NULL;
443444

444445
if (!(device->core_support & IB_UVERBS_CORE_SUPPORT_OPTIONAL_MR_ACCESS))
445-
in->access &= ~IBV_ACCESS_OPTIONAL_RANGE;
446+
mr_init_attr->access &= ~IBV_ACCESS_OPTIONAL_RANGE;
446447

447-
mr = get_ops(pd->context)->reg_mr_ex(pd, in);
448+
mr = get_ops(pd->context)->reg_mr_ex(pd, mr_init_attr);
448449
if (mr) {
449450
mr->context = pd->context;
450-
mr->length = in->length;
451+
mr->length = mr_init_attr->length;
451452
mr->pd = pd;
452-
if (in->comp_mask & IBV_REG_MR_MASK_ADDR)
453-
mr->addr = in->addr;
453+
if (mr_init_attr->comp_mask & IBV_REG_MR_MASK_ADDR)
454+
mr->addr = mr_init_attr->addr;
454455
else
455456
/* Follows ibv_reg_dmabuf_mr logic */
456-
mr->addr = (void *)(uintptr_t)in->fd_offset;
457+
mr->addr = (void *)(uintptr_t) mr_init_attr->fd_offset;
457458
} else {
458459
if (need_fork)
459-
ibv_dofork_range(in->addr, in->length);
460+
ibv_dofork_range(mr_init_attr->addr, mr_init_attr->length);
460461
}
461462

462463
/* restore the input access flags */
463-
in->access = in_access;
464+
mr_init_attr->access = in_access;
464465
return mr;
465466
}
466467

libibverbs/verbs.h

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -681,18 +681,18 @@ struct ibv_mr {
681681
uint32_t rkey;
682682
};
683683

684-
enum ibv_reg_mr_in_mask {
684+
enum ibv_mr_init_attr_mask {
685685
IBV_REG_MR_MASK_IOVA = 1 << 0,
686686
IBV_REG_MR_MASK_ADDR = 1 << 1,
687687
IBV_REG_MR_MASK_FD = 1 << 2,
688688
IBV_REG_MR_MASK_FD_OFFSET = 1 << 3,
689689
IBV_REG_MR_MASK_DMAH = 1 << 4,
690690
};
691691

692-
struct ibv_reg_mr_in {
692+
struct ibv_mr_init_attr {
693693
size_t length;
694694
int access;
695-
uint64_t comp_mask; /* Use enum ibv_reg_mr_in_mask */
695+
uint64_t comp_mask; /* Use enum ibv_mr_init_attr_mask */
696696
uint64_t iova;
697697
void *addr;
698698
int fd;
@@ -2181,7 +2181,8 @@ struct ibv_values_ex {
21812181

21822182
struct verbs_context {
21832183
/* "grows up" - new fields go here */
2184-
struct ibv_mr *(*reg_mr_ex)(struct ibv_pd *pd, struct ibv_reg_mr_in *in);
2184+
struct ibv_mr *(*reg_mr_ex)(struct ibv_pd *pd,
2185+
struct ibv_mr_init_attr *mr_init_attr);
21852186
int (*dealloc_dmah)(struct ibv_dmah *dmah);
21862187
struct ibv_dmah *(*alloc_dmah)(struct ibv_context *context,
21872188
struct ibv_dmah_init_attr *attr);
@@ -2677,7 +2678,7 @@ __ibv_reg_mr_iova(struct ibv_pd *pd, void *addr, size_t length, uint64_t iova,
26772678
struct ibv_mr *ibv_reg_dmabuf_mr(struct ibv_pd *pd, uint64_t offset, size_t length,
26782679
uint64_t iova, int fd, int access);
26792680

2680-
struct ibv_mr *ibv_reg_mr_ex(struct ibv_pd *pd, struct ibv_reg_mr_in *in);
2681+
struct ibv_mr *ibv_reg_mr_ex(struct ibv_pd *pd, struct ibv_mr_init_attr *mr_init_attr);
26812682

26822683
enum ibv_rereg_mr_err_code {
26832684
/* Old MR is valid, invalid input */

providers/mlx5/mlx5.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1143,7 +1143,7 @@ struct ibv_mr *mlx5_reg_mr(struct ibv_pd *pd, void *addr, size_t length,
11431143
uint64_t hca_va, int access);
11441144
struct ibv_mr *mlx5_reg_dmabuf_mr(struct ibv_pd *pd, uint64_t offset, size_t length,
11451145
uint64_t iova, int fd, int access);
1146-
struct ibv_mr *mlx5_reg_mr_ex(struct ibv_pd *pd, struct ibv_reg_mr_in *in);
1146+
struct ibv_mr *mlx5_reg_mr_ex(struct ibv_pd *pd, struct ibv_mr_init_attr *mr_init_attr);
11471147
int mlx5_rereg_mr(struct verbs_mr *mr, int flags, struct ibv_pd *pd, void *addr,
11481148
size_t length, int access);
11491149
int mlx5_dereg_mr(struct verbs_mr *mr);

providers/mlx5/verbs.c

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -651,7 +651,7 @@ struct ibv_mr *mlx5_reg_mr(struct ibv_pd *pd, void *addr, size_t length,
651651
return &mr->vmr.ibv_mr;
652652
}
653653

654-
struct ibv_mr *mlx5_reg_mr_ex(struct ibv_pd *pd, struct ibv_reg_mr_in *in)
654+
struct ibv_mr *mlx5_reg_mr_ex(struct ibv_pd *pd, struct ibv_mr_init_attr *mr_init_attr)
655655
{
656656
struct mlx5_mr *mr;
657657
int ret;
@@ -660,12 +660,12 @@ struct ibv_mr *mlx5_reg_mr_ex(struct ibv_pd *pd, struct ibv_reg_mr_in *in)
660660
if (!mr)
661661
return NULL;
662662

663-
ret = ibv_cmd_reg_mr_ex(pd, &mr->vmr, in);
663+
ret = ibv_cmd_reg_mr_ex(pd, &mr->vmr, mr_init_attr);
664664
if (ret) {
665665
free(mr);
666666
return NULL;
667667
}
668-
mr->alloc_flags = in->access;
668+
mr->alloc_flags = mr_init_attr->access;
669669

670670
return &mr->vmr.ibv_mr;
671671
}

0 commit comments

Comments
 (0)