RE: [PATCH v5 3/5] RDMA/uverbs: Add uverbs command for dma-buf based MR registration

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

 



> -----Original Message-----
> From: Jason Gunthorpe <jgg@xxxxxxxxxx>
> Sent: Friday, October 16, 2020 5:18 PM
> To: Xiong, Jianxin <jianxin.xiong@xxxxxxxxx>
> Cc: linux-rdma@xxxxxxxxxxxxxxx; dri-devel@xxxxxxxxxxxxxxxxxxxxx; Doug Ledford <dledford@xxxxxxxxxx>; Leon Romanovsky
> <leon@xxxxxxxxxx>; Sumit Semwal <sumit.semwal@xxxxxxxxxx>; Christian Koenig <christian.koenig@xxxxxxx>; Vetter, Daniel
> <daniel.vetter@xxxxxxxxx>
> Subject: Re: [PATCH v5 3/5] RDMA/uverbs: Add uverbs command for dma-buf based MR registration
> 
> 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.xiong@xxxxxxxxx>
> > Reviewed-by: Sean Hefty <sean.hefty@xxxxxxxxx>
> > Acked-by: Michael J. Ruhl <michael.j.ruhl@xxxxxxxxx>
> > Acked-by: Christian Koenig <christian.koenig@xxxxxxx>
> > Acked-by: Daniel Vetter <daniel.vetter@xxxxxxxx>
> > 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.

Right now it does mean the starting address, but that can be changed.

> 
> > +	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

IOVA sounds good to me.

> 
> Jason




[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