]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
RDMA: Pass uverbs_attr_bundle as part of '.reg_user_mr_dmabuf' API
authorYishai Hadas <yishaih@nvidia.com>
Thu, 1 Aug 2024 12:05:15 +0000 (15:05 +0300)
committerLeon Romanovsky <leon@kernel.org>
Sun, 11 Aug 2024 08:12:50 +0000 (11:12 +0300)
Pass uverbs_attr_bundle as part of '.reg_user_mr_dmabuf' API instead of
udata.

This enables passing some new ioctl attributes to the drivers, as will
be introduced in the next patches for mlx5 driver.

Change the involved drivers accordingly.

Signed-off-by: Yishai Hadas <yishaih@nvidia.com>
Link: https://patch.msgid.link/9a25b2fc02443f7c36c2d93499ae25252b6afd40.1722512548.git.leon@kernel.org
Signed-off-by: Leon Romanovsky <leon@kernel.org>
drivers/infiniband/core/uverbs_std_types_mr.c
drivers/infiniband/hw/bnxt_re/ib_verbs.c
drivers/infiniband/hw/bnxt_re/ib_verbs.h
drivers/infiniband/hw/efa/efa.h
drivers/infiniband/hw/efa/efa_verbs.c
drivers/infiniband/hw/irdma/verbs.c
drivers/infiniband/hw/mlx5/mlx5_ib.h
drivers/infiniband/hw/mlx5/mr.c
include/rdma/ib_verbs.h

index 03e1db5d1e8c3903f26432c58b00d2e5d64b3681..7ebc7bd3caaea4b116e3a2960841918b3125f63f 100644 (file)
@@ -239,7 +239,7 @@ static int UVERBS_HANDLER(UVERBS_METHOD_REG_DMABUF_MR)(
 
        mr = pd->device->ops.reg_user_mr_dmabuf(pd, offset, length, iova, fd,
                                                access_flags,
-                                               &attrs->driver_udata);
+                                               attrs);
        if (IS_ERR(mr))
                return PTR_ERR(mr);
 
index 7c757351a0166fc176d597555347463442d646fd..43a68e7de02add14ee9ab862384e55f226bc410e 100644 (file)
@@ -4122,7 +4122,8 @@ struct ib_mr *bnxt_re_reg_user_mr(struct ib_pd *ib_pd, u64 start, u64 length,
 
 struct ib_mr *bnxt_re_reg_user_mr_dmabuf(struct ib_pd *ib_pd, u64 start,
                                         u64 length, u64 virt_addr, int fd,
-                                        int mr_access_flags, struct ib_udata *udata)
+                                        int mr_access_flags,
+                                        struct uverbs_attr_bundle *attrs)
 {
        struct bnxt_re_pd *pd = container_of(ib_pd, struct bnxt_re_pd, ib_pd);
        struct bnxt_re_dev *rdev = pd->rdev;
index e98cb17173385b90797e9e6c474ff218a35f46da..3ddeda312376af25084f8ecaa16bb2f7d1e260e9 100644 (file)
@@ -242,7 +242,7 @@ struct ib_mr *bnxt_re_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
 struct ib_mr *bnxt_re_reg_user_mr_dmabuf(struct ib_pd *ib_pd, u64 start,
                                         u64 length, u64 virt_addr,
                                         int fd, int mr_access_flags,
-                                        struct ib_udata *udata);
+                                        struct uverbs_attr_bundle *attrs);
 int bnxt_re_alloc_ucontext(struct ib_ucontext *ctx, struct ib_udata *udata);
 void bnxt_re_dealloc_ucontext(struct ib_ucontext *context);
 int bnxt_re_mmap(struct ib_ucontext *context, struct vm_area_struct *vma);
index e580e087e9da0c2a6c73b05ed642599609f1112f..d7fc9d5eeefd325675d1f09ed527dc320d71e5d4 100644 (file)
@@ -168,7 +168,7 @@ struct ib_mr *efa_reg_mr(struct ib_pd *ibpd, u64 start, u64 length,
 struct ib_mr *efa_reg_user_mr_dmabuf(struct ib_pd *ibpd, u64 start,
                                     u64 length, u64 virt_addr,
                                     int fd, int access_flags,
-                                    struct ib_udata *udata);
+                                    struct uverbs_attr_bundle *attrs);
 int efa_dereg_mr(struct ib_mr *ibmr, struct ib_udata *udata);
 int efa_get_port_immutable(struct ib_device *ibdev, u32 port_num,
                           struct ib_port_immutable *immutable);
index b1e0a1b7c59d3b5b2c40c70d8d86c48060461a01..cc13415ff7e70cebc28b2fea13e3ec34c3aad307 100644 (file)
@@ -1684,14 +1684,14 @@ static int efa_register_mr(struct ib_pd *ibpd, struct efa_mr *mr, u64 start,
 struct ib_mr *efa_reg_user_mr_dmabuf(struct ib_pd *ibpd, u64 start,
                                     u64 length, u64 virt_addr,
                                     int fd, int access_flags,
-                                    struct ib_udata *udata)
+                                    struct uverbs_attr_bundle *attrs)
 {
        struct efa_dev *dev = to_edev(ibpd->device);
        struct ib_umem_dmabuf *umem_dmabuf;
        struct efa_mr *mr;
        int err;
 
-       mr = efa_alloc_mr(ibpd, access_flags, udata);
+       mr = efa_alloc_mr(ibpd, access_flags, &attrs->driver_udata);
        if (IS_ERR(mr)) {
                err = PTR_ERR(mr);
                goto err_out;
index fc0ce35da14e6448f582a1213b34ab10abce8a62..6a107decb704eb7260990edfcd58b65ac838b50b 100644 (file)
@@ -3085,7 +3085,7 @@ error:
 static struct ib_mr *irdma_reg_user_mr_dmabuf(struct ib_pd *pd, u64 start,
                                              u64 len, u64 virt,
                                              int fd, int access,
-                                             struct ib_udata *udata)
+                                             struct uverbs_attr_bundle *attrs)
 {
        struct irdma_device *iwdev = to_iwdev(pd->device);
        struct ib_umem_dmabuf *umem_dmabuf;
index b2ebea173547b6504f9470d0e80231afd17ede43..e915a62da49cb574a2656e0a66f54c9b8a04d244 100644 (file)
@@ -1354,7 +1354,7 @@ struct ib_mr *mlx5_ib_reg_user_mr(struct ib_pd *pd, u64 start, u64 length,
 struct ib_mr *mlx5_ib_reg_user_mr_dmabuf(struct ib_pd *pd, u64 start,
                                         u64 length, u64 virt_addr,
                                         int fd, int access_flags,
-                                        struct ib_udata *udata);
+                                        struct uverbs_attr_bundle *attrs);
 int mlx5_ib_advise_mr(struct ib_pd *pd,
                      enum ib_uverbs_advise_mr_advice advice,
                      u32 flags,
index 98bd8eaa393ef7cd9d8eb72c97aaeae480c0656b..1dfd9124bdd1c9ef0122ab04731cd7bd9b3c1c59 100644 (file)
@@ -1513,7 +1513,7 @@ static struct dma_buf_attach_ops mlx5_ib_dmabuf_attach_ops = {
 struct ib_mr *mlx5_ib_reg_user_mr_dmabuf(struct ib_pd *pd, u64 offset,
                                         u64 length, u64 virt_addr,
                                         int fd, int access_flags,
-                                        struct ib_udata *udata)
+                                        struct uverbs_attr_bundle *attrs)
 {
        struct mlx5_ib_dev *dev = to_mdev(pd->device);
        struct mlx5_ib_mr *mr = NULL;
index 6c5712ae559d8fb7d964553dbfad6c5b2b565d96..a1dcf812d78782c515d93d609f5952e4e7cab525 100644 (file)
@@ -2476,7 +2476,7 @@ struct ib_device_ops {
        struct ib_mr *(*reg_user_mr_dmabuf)(struct ib_pd *pd, u64 offset,
                                            u64 length, u64 virt_addr, int fd,
                                            int mr_access_flags,
-                                           struct ib_udata *udata);
+                                           struct uverbs_attr_bundle *attrs);
        struct ib_mr *(*rereg_user_mr)(struct ib_mr *mr, int flags, u64 start,
                                       u64 length, u64 virt_addr,
                                       int mr_access_flags, struct ib_pd *pd,