From: Jason Gunthorpe <jgg@ziepe.ca>
To: Jianxin Xiong <jianxin.xiong@intel.com>
Cc: linux-rdma@vger.kernel.org, dri-devel@lists.freedesktop.org,
Doug Ledford <dledford@redhat.com>,
Leon Romanovsky <leon@kernel.org>,
Sumit Semwal <sumit.semwal@linaro.org>,
Christian Koenig <christian.koenig@amd.com>,
Daniel Vetter <daniel.vetter@intel.com>
Subject: Re: [PATCH rdma-core 1/5] verbs: Support dma-buf based memory region
Date: Mon, 23 Nov 2020 14:01:26 -0400 [thread overview]
Message-ID: <20201123180126.GY244516@ziepe.ca> (raw)
In-Reply-To: <1606153984-104583-2-git-send-email-jianxin.xiong@intel.com>
On Mon, Nov 23, 2020 at 09:53:00AM -0800, Jianxin Xiong wrote:
> Add new API function and new provider method for registering dma-buf
> based memory region. Update the man page and bump the API version.
>
> Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
> kernel-headers/rdma/ib_user_ioctl_cmds.h | 14 ++++++++++++
> libibverbs/cmd_mr.c | 38 ++++++++++++++++++++++++++++++++
> libibverbs/driver.h | 7 ++++++
> libibverbs/dummy_ops.c | 11 +++++++++
> libibverbs/libibverbs.map.in | 6 +++++
> libibverbs/man/ibv_reg_mr.3 | 21 ++++++++++++++++--
> libibverbs/verbs.c | 19 ++++++++++++++++
> libibverbs/verbs.h | 10 +++++++++
> 8 files changed, 124 insertions(+), 2 deletions(-)
>
> diff --git a/kernel-headers/rdma/ib_user_ioctl_cmds.h b/kernel-headers/rdma/ib_user_ioctl_cmds.h
> index 7968a18..dafc7eb 100644
> +++ b/kernel-headers/rdma/ib_user_ioctl_cmds.h
> @@ -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
> @@ -251,6 +252,7 @@ enum uverbs_methods_mr {
> UVERBS_METHOD_MR_DESTROY,
> UVERBS_METHOD_ADVISE_MR,
> UVERBS_METHOD_QUERY_MR,
> + UVERBS_METHOD_REG_DMABUF_MR,
> };
>
> enum uverbs_attrs_mr_destroy_ids {
> @@ -272,6 +274,18 @@ enum uverbs_attrs_query_mr_cmd_attr_ids {
> UVERBS_ATTR_QUERY_MR_RESP_IOVA,
> };
>
> +enum uverbs_attrs_reg_dmabuf_mr_cmd_attr_ids {
> + UVERBS_ATTR_REG_DMABUF_MR_HANDLE,
> + UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE,
> + UVERBS_ATTR_REG_DMABUF_MR_OFFSET,
> + UVERBS_ATTR_REG_DMABUF_MR_LENGTH,
> + UVERBS_ATTR_REG_DMABUF_MR_IOVA,
> + UVERBS_ATTR_REG_DMABUF_MR_FD,
> + UVERBS_ATTR_REG_DMABUF_MR_ACCESS_FLAGS,
> + UVERBS_ATTR_REG_DMABUF_MR_RESP_LKEY,
> + UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY,
> +};
> +
> enum uverbs_attrs_create_counters_cmd_attr_ids {
> UVERBS_ATTR_CREATE_COUNTERS_HANDLE,
> };
Please put changes to kernel-headers/ into their own patch
There is a script to make that commit in kernel-headers/update
> diff --git a/libibverbs/cmd_mr.c b/libibverbs/cmd_mr.c
> index 42dbe42..91ce2ef 100644
> +++ b/libibverbs/cmd_mr.c
> @@ -1,5 +1,6 @@
> /*
> * Copyright (c) 2018 Mellanox Technologies, Ltd. 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
> @@ -116,3 +117,40 @@ int ibv_cmd_query_mr(struct ibv_pd *pd, struct verbs_mr *vmr,
> return 0;
> }
>
> +int ibv_cmd_reg_dmabuf_mr(struct ibv_pd *pd, uint64_t offset, size_t length,
> + uint64_t iova, int fd, int access,
> + struct verbs_mr *vmr)
> +{
> + DECLARE_COMMAND_BUFFER(cmdb, UVERBS_OBJECT_MR,
> + UVERBS_METHOD_REG_DMABUF_MR,
> + 9);
> + struct ib_uverbs_attr *handle;
> + uint32_t lkey, rkey;
> + int ret;
> +
> + handle = fill_attr_out_obj(cmdb, UVERBS_ATTR_REG_DMABUF_MR_HANDLE);
> + fill_attr_out_ptr(cmdb, UVERBS_ATTR_REG_DMABUF_MR_RESP_LKEY, &lkey);
> + fill_attr_out_ptr(cmdb, UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY, &rkey);
> +
> + fill_attr_in_obj(cmdb, UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE, pd->handle);
> + fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_DMABUF_MR_OFFSET, offset);
> + fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_DMABUF_MR_LENGTH, length);
> + fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_DMABUF_MR_IOVA, iova);
> + fill_attr_in_uint32(cmdb, UVERBS_ATTR_REG_DMABUF_MR_FD, fd);
> + fill_attr_in_uint32(cmdb, UVERBS_ATTR_REG_DMABUF_MR_ACCESS_FLAGS, access);
> +
> + ret = execute_ioctl(pd->context, cmdb);
> + if (ret)
> + return errno;
> +
> + vmr->ibv_mr.handle =
> + read_attr_obj(UVERBS_ATTR_REG_DMABUF_MR_HANDLE, handle);
> + vmr->ibv_mr.context = pd->context;
> + vmr->ibv_mr.lkey = lkey;
> + vmr->ibv_mr.rkey = rkey;
> + vmr->ibv_mr.pd = pd;
> + vmr->ibv_mr.addr = (void *)offset;
> + vmr->ibv_mr.length = length;
> + vmr->mr_type = IBV_MR_TYPE_MR;
Remove the extra spaces around the = please
> diff --git a/libibverbs/libibverbs.map.in b/libibverbs/libibverbs.map.in
> index b5ccaca..f67e1ef 100644
> +++ b/libibverbs/libibverbs.map.in
> @@ -148,6 +148,11 @@ IBVERBS_1.11 {
> _ibv_query_gid_table;
> } IBVERBS_1.10;
>
> +IBVERBS_1.12 {
> + global:
> + ibv_reg_dmabuf_mr;
> +} IBVERBS_1.11;
There are a few things missing for this, the github CI should throw
some errors, please check it and fix everything
After this you need to change libibverbs/CMakeLists.txt and update:
1 1.11.${PACKAGE_VERSION}
To
1 1.12.${PACKAGE_VERSION}
You also need to update debian/libibverbs1.symbols, check the git
history for examples
> +LATEST_SYMVER_FUNC(ibv_reg_dmabuf_mr, 1_12, "IBVERBS_1.12",
> + struct ibv_mr *,
> + struct ibv_pd *pd, uint64_t offset,
> + size_t length, int fd, int access)
Do not use LATEST_SYMVER_FUNC, it is only for special cases where we
have two implementations of the same function. A normal function and
the map file update is all that is needed
> diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h
> index ee57e05..3961b1e 100644
> +++ b/libibverbs/verbs.h
> @@ -3,6 +3,7 @@
> * Copyright (c) 2004, 2011-2012 Intel Corporation. All rights reserved.
> * Copyright (c) 2005, 2006, 2007 Cisco Systems, Inc. All rights reserved.
> * Copyright (c) 2005 PathScale, 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
> @@ -2133,6 +2134,9 @@ struct verbs_context {
> struct ibv_xrcd * (*open_xrcd)(struct ibv_context *context,
> struct ibv_xrcd_init_attr *xrcd_init_attr);
> int (*close_xrcd)(struct ibv_xrcd *xrcd);
> + struct ibv_mr * (*reg_dmabuf_mr)(struct ibv_pd *pd, uint64_t offset,
> + size_t length, uint64_t iova,
> + int fd, int access);
> uint64_t _ABI_placeholder3;
> size_t sz; /* Must be immediately before struct ibv_context */
> struct ibv_context context; /* Must be last field in the struct */
No, delete this whole hunk, it is not needed
Jason
WARNING: multiple messages have this Message-ID (diff)
From: Jason Gunthorpe <jgg@ziepe.ca>
To: Jianxin Xiong <jianxin.xiong@intel.com>
Cc: Leon Romanovsky <leon@kernel.org>,
linux-rdma@vger.kernel.org, dri-devel@lists.freedesktop.org,
Doug Ledford <dledford@redhat.com>,
Daniel Vetter <daniel.vetter@intel.com>,
Christian Koenig <christian.koenig@amd.com>
Subject: Re: [PATCH rdma-core 1/5] verbs: Support dma-buf based memory region
Date: Mon, 23 Nov 2020 14:01:26 -0400 [thread overview]
Message-ID: <20201123180126.GY244516@ziepe.ca> (raw)
In-Reply-To: <1606153984-104583-2-git-send-email-jianxin.xiong@intel.com>
On Mon, Nov 23, 2020 at 09:53:00AM -0800, Jianxin Xiong wrote:
> Add new API function and new provider method for registering dma-buf
> based memory region. Update the man page and bump the API version.
>
> Signed-off-by: Jianxin Xiong <jianxin.xiong@intel.com>
> kernel-headers/rdma/ib_user_ioctl_cmds.h | 14 ++++++++++++
> libibverbs/cmd_mr.c | 38 ++++++++++++++++++++++++++++++++
> libibverbs/driver.h | 7 ++++++
> libibverbs/dummy_ops.c | 11 +++++++++
> libibverbs/libibverbs.map.in | 6 +++++
> libibverbs/man/ibv_reg_mr.3 | 21 ++++++++++++++++--
> libibverbs/verbs.c | 19 ++++++++++++++++
> libibverbs/verbs.h | 10 +++++++++
> 8 files changed, 124 insertions(+), 2 deletions(-)
>
> diff --git a/kernel-headers/rdma/ib_user_ioctl_cmds.h b/kernel-headers/rdma/ib_user_ioctl_cmds.h
> index 7968a18..dafc7eb 100644
> +++ b/kernel-headers/rdma/ib_user_ioctl_cmds.h
> @@ -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
> @@ -251,6 +252,7 @@ enum uverbs_methods_mr {
> UVERBS_METHOD_MR_DESTROY,
> UVERBS_METHOD_ADVISE_MR,
> UVERBS_METHOD_QUERY_MR,
> + UVERBS_METHOD_REG_DMABUF_MR,
> };
>
> enum uverbs_attrs_mr_destroy_ids {
> @@ -272,6 +274,18 @@ enum uverbs_attrs_query_mr_cmd_attr_ids {
> UVERBS_ATTR_QUERY_MR_RESP_IOVA,
> };
>
> +enum uverbs_attrs_reg_dmabuf_mr_cmd_attr_ids {
> + UVERBS_ATTR_REG_DMABUF_MR_HANDLE,
> + UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE,
> + UVERBS_ATTR_REG_DMABUF_MR_OFFSET,
> + UVERBS_ATTR_REG_DMABUF_MR_LENGTH,
> + UVERBS_ATTR_REG_DMABUF_MR_IOVA,
> + UVERBS_ATTR_REG_DMABUF_MR_FD,
> + UVERBS_ATTR_REG_DMABUF_MR_ACCESS_FLAGS,
> + UVERBS_ATTR_REG_DMABUF_MR_RESP_LKEY,
> + UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY,
> +};
> +
> enum uverbs_attrs_create_counters_cmd_attr_ids {
> UVERBS_ATTR_CREATE_COUNTERS_HANDLE,
> };
Please put changes to kernel-headers/ into their own patch
There is a script to make that commit in kernel-headers/update
> diff --git a/libibverbs/cmd_mr.c b/libibverbs/cmd_mr.c
> index 42dbe42..91ce2ef 100644
> +++ b/libibverbs/cmd_mr.c
> @@ -1,5 +1,6 @@
> /*
> * Copyright (c) 2018 Mellanox Technologies, Ltd. 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
> @@ -116,3 +117,40 @@ int ibv_cmd_query_mr(struct ibv_pd *pd, struct verbs_mr *vmr,
> return 0;
> }
>
> +int ibv_cmd_reg_dmabuf_mr(struct ibv_pd *pd, uint64_t offset, size_t length,
> + uint64_t iova, int fd, int access,
> + struct verbs_mr *vmr)
> +{
> + DECLARE_COMMAND_BUFFER(cmdb, UVERBS_OBJECT_MR,
> + UVERBS_METHOD_REG_DMABUF_MR,
> + 9);
> + struct ib_uverbs_attr *handle;
> + uint32_t lkey, rkey;
> + int ret;
> +
> + handle = fill_attr_out_obj(cmdb, UVERBS_ATTR_REG_DMABUF_MR_HANDLE);
> + fill_attr_out_ptr(cmdb, UVERBS_ATTR_REG_DMABUF_MR_RESP_LKEY, &lkey);
> + fill_attr_out_ptr(cmdb, UVERBS_ATTR_REG_DMABUF_MR_RESP_RKEY, &rkey);
> +
> + fill_attr_in_obj(cmdb, UVERBS_ATTR_REG_DMABUF_MR_PD_HANDLE, pd->handle);
> + fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_DMABUF_MR_OFFSET, offset);
> + fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_DMABUF_MR_LENGTH, length);
> + fill_attr_in_uint64(cmdb, UVERBS_ATTR_REG_DMABUF_MR_IOVA, iova);
> + fill_attr_in_uint32(cmdb, UVERBS_ATTR_REG_DMABUF_MR_FD, fd);
> + fill_attr_in_uint32(cmdb, UVERBS_ATTR_REG_DMABUF_MR_ACCESS_FLAGS, access);
> +
> + ret = execute_ioctl(pd->context, cmdb);
> + if (ret)
> + return errno;
> +
> + vmr->ibv_mr.handle =
> + read_attr_obj(UVERBS_ATTR_REG_DMABUF_MR_HANDLE, handle);
> + vmr->ibv_mr.context = pd->context;
> + vmr->ibv_mr.lkey = lkey;
> + vmr->ibv_mr.rkey = rkey;
> + vmr->ibv_mr.pd = pd;
> + vmr->ibv_mr.addr = (void *)offset;
> + vmr->ibv_mr.length = length;
> + vmr->mr_type = IBV_MR_TYPE_MR;
Remove the extra spaces around the = please
> diff --git a/libibverbs/libibverbs.map.in b/libibverbs/libibverbs.map.in
> index b5ccaca..f67e1ef 100644
> +++ b/libibverbs/libibverbs.map.in
> @@ -148,6 +148,11 @@ IBVERBS_1.11 {
> _ibv_query_gid_table;
> } IBVERBS_1.10;
>
> +IBVERBS_1.12 {
> + global:
> + ibv_reg_dmabuf_mr;
> +} IBVERBS_1.11;
There are a few things missing for this, the github CI should throw
some errors, please check it and fix everything
After this you need to change libibverbs/CMakeLists.txt and update:
1 1.11.${PACKAGE_VERSION}
To
1 1.12.${PACKAGE_VERSION}
You also need to update debian/libibverbs1.symbols, check the git
history for examples
> +LATEST_SYMVER_FUNC(ibv_reg_dmabuf_mr, 1_12, "IBVERBS_1.12",
> + struct ibv_mr *,
> + struct ibv_pd *pd, uint64_t offset,
> + size_t length, int fd, int access)
Do not use LATEST_SYMVER_FUNC, it is only for special cases where we
have two implementations of the same function. A normal function and
the map file update is all that is needed
> diff --git a/libibverbs/verbs.h b/libibverbs/verbs.h
> index ee57e05..3961b1e 100644
> +++ b/libibverbs/verbs.h
> @@ -3,6 +3,7 @@
> * Copyright (c) 2004, 2011-2012 Intel Corporation. All rights reserved.
> * Copyright (c) 2005, 2006, 2007 Cisco Systems, Inc. All rights reserved.
> * Copyright (c) 2005 PathScale, 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
> @@ -2133,6 +2134,9 @@ struct verbs_context {
> struct ibv_xrcd * (*open_xrcd)(struct ibv_context *context,
> struct ibv_xrcd_init_attr *xrcd_init_attr);
> int (*close_xrcd)(struct ibv_xrcd *xrcd);
> + struct ibv_mr * (*reg_dmabuf_mr)(struct ibv_pd *pd, uint64_t offset,
> + size_t length, uint64_t iova,
> + int fd, int access);
> uint64_t _ABI_placeholder3;
> size_t sz; /* Must be immediately before struct ibv_context */
> struct ibv_context context; /* Must be last field in the struct */
No, delete this whole hunk, it is not needed
Jason
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel
next prev parent reply other threads:[~2020-11-23 18:01 UTC|newest]
Thread overview: 48+ messages / expand[flat|nested] mbox.gz Atom feed top
2020-11-23 17:52 [PATCH rdma-core 0/5] Add user space dma-buf support Jianxin Xiong
2020-11-23 17:52 ` Jianxin Xiong
2020-11-23 17:53 ` [PATCH rdma-core 1/5] verbs: Support dma-buf based memory region Jianxin Xiong
2020-11-23 17:53 ` Jianxin Xiong
2020-11-23 18:01 ` Jason Gunthorpe [this message]
2020-11-23 18:01 ` Jason Gunthorpe
2020-11-24 10:31 ` Yishai Hadas
2020-11-24 10:31 ` Yishai Hadas
2020-11-24 18:00 ` Xiong, Jianxin
2020-11-24 18:00 ` Xiong, Jianxin
2020-11-23 17:53 ` [PATCH rdma-core 2/5] mlx5: " Jianxin Xiong
2020-11-23 17:53 ` Jianxin Xiong
2020-11-23 18:01 ` Jason Gunthorpe
2020-11-23 18:01 ` Jason Gunthorpe
2020-11-23 19:40 ` Xiong, Jianxin
2020-11-23 19:40 ` Xiong, Jianxin
2020-11-23 17:53 ` [PATCH rdma-core 3/5] pyverbs: Add dma-buf based MR support Jianxin Xiong
2020-11-23 17:53 ` Jianxin Xiong
2020-11-23 18:05 ` Jason Gunthorpe
2020-11-23 18:05 ` Jason Gunthorpe
2020-11-23 19:48 ` Xiong, Jianxin
2020-11-23 19:48 ` Xiong, Jianxin
2020-11-24 15:16 ` Daniel Vetter
2020-11-24 15:16 ` Daniel Vetter
2020-11-24 15:36 ` Jason Gunthorpe
2020-11-24 15:36 ` Jason Gunthorpe
2020-11-24 16:21 ` Xiong, Jianxin
2020-11-24 16:21 ` Xiong, Jianxin
2020-11-24 18:45 ` Xiong, Jianxin
2020-11-24 18:45 ` Xiong, Jianxin
2020-11-25 10:50 ` Daniel Vetter
2020-11-25 10:50 ` Daniel Vetter
2020-11-25 12:14 ` Jason Gunthorpe
2020-11-25 12:14 ` Jason Gunthorpe
2020-11-25 19:27 ` Xiong, Jianxin
2020-11-25 19:27 ` Xiong, Jianxin
2020-11-26 0:00 ` Jason Gunthorpe
2020-11-26 0:00 ` Jason Gunthorpe
2020-11-26 0:43 ` Xiong, Jianxin
2020-11-26 0:43 ` Xiong, Jianxin
2020-11-23 17:53 ` [PATCH rdma-core 4/5] tests: Add tests for dma-buf based memory regions Jianxin Xiong
2020-11-23 17:53 ` Jianxin Xiong
2020-11-23 17:53 ` [PATCH rdma-core 5/5] tests: Bug fix for get_access_flags() Jianxin Xiong
2020-11-23 17:53 ` Jianxin Xiong
2020-11-24 20:26 ` John Hubbard
2020-11-24 20:26 ` John Hubbard
2020-11-24 20:43 ` Xiong, Jianxin
2020-11-24 20:43 ` Xiong, Jianxin
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20201123180126.GY244516@ziepe.ca \
--to=jgg@ziepe.ca \
--cc=christian.koenig@amd.com \
--cc=daniel.vetter@intel.com \
--cc=dledford@redhat.com \
--cc=dri-devel@lists.freedesktop.org \
--cc=jianxin.xiong@intel.com \
--cc=leon@kernel.org \
--cc=linux-rdma@vger.kernel.org \
--cc=sumit.semwal@linaro.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.