On Thu, Oct 15, 2020 at 03:02:55PM -0700, Jianxin Xiong wrote:
> Implement a new uverbs ioctl method for memory registration with file
> descriptor as an extra parameter.
> 
> Signed-off-by: Jianxin Xiong <jianxin.xi...@intel.com>
> Reviewed-by: Sean Hefty <sean.he...@intel.com>
> Acked-by: Michael J. Ruhl <michael.j.r...@intel.com>
> Acked-by: Christian Koenig <christian.koe...@amd.com>
> Acked-by: Daniel Vetter <daniel.vet...@ffwll.ch>
>  drivers/infiniband/core/uverbs_std_types_mr.c | 112 
> ++++++++++++++++++++++++++
>  include/uapi/rdma/ib_user_ioctl_cmds.h        |  14 ++++
>  2 files changed, 126 insertions(+)
> 
> diff --git a/drivers/infiniband/core/uverbs_std_types_mr.c 
> b/drivers/infiniband/core/uverbs_std_types_mr.c
> index 9b22bb5..e54459f 100644
> +++ b/drivers/infiniband/core/uverbs_std_types_mr.c
> @@ -1,5 +1,6 @@
>  /*
>   * Copyright (c) 2018, Mellanox Technologies inc.  All rights reserved.
> + * Copyright (c) 2020, Intel Corporation.  All rights reserved.
>   *
>   * This software is available to you under a choice of one of two
>   * licenses.  You may choose to be licensed under the terms of the GNU
> @@ -178,6 +179,85 @@ static int UVERBS_HANDLER(UVERBS_METHOD_QUERY_MR)(
>       return IS_UVERBS_COPY_ERR(ret) ? ret : 0;
>  }
>  
> +static int UVERBS_HANDLER(UVERBS_METHOD_REG_DMABUF_MR)(
> +     struct uverbs_attr_bundle *attrs)
> +{
> +     struct ib_uobject *uobj =
> +             uverbs_attr_get_uobject(attrs, 
> UVERBS_ATTR_REG_DMABUF_MR_HANDLE);
> +     struct ib_pd *pd =
> +             uverbs_attr_get_obj(attrs, UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE);
> +     struct ib_device *ib_dev = pd->device;
> +
> +     u64 start, length, virt_addr;
> +     u32 fd, access_flags;
> +     struct ib_mr *mr;
> +     int ret;
> +
> +     if (!ib_dev->ops.reg_user_mr_dmabuf)
> +             return -EOPNOTSUPP;
> +
> +     ret = uverbs_copy_from(&start, attrs,
> +                            UVERBS_ATTR_REG_DMABUF_MR_ADDR);

This should be called OFFSET uniformly here and in all the call chain
below. Not start and not addr.

> +     if (ret)
> +             return ret;
> +
> +     ret = uverbs_copy_from(&length, attrs,
> +                            UVERBS_ATTR_REG_DMABUF_MR_LENGTH);
> +     if (ret)
> +             return ret;
> +
> +     ret = uverbs_copy_from(&virt_addr, attrs,
> +                            UVERBS_ATTR_REG_DMABUF_MR_HCA_VA);

I've been trying to call this IOVA

Jason
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

Reply via email to