From: Yuval Shaia <yuval.shaia@oracle.com>
To: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
Cc: qemu-devel@nongnu.org, yuval.shaia@oracle.com
Subject: Re: [Qemu-devel] [PATCH 07/13] hw/rdma: Do not allocate memory for non-dma MR
Date: Sun, 5 Aug 2018 17:56:34 +0300 [thread overview]
Message-ID: <20180805145634.GA22209@lap1> (raw)
In-Reply-To: <42b81675-ea89-e9e9-f84c-ad723372fc1c@gmail.com>
On Tue, Jul 24, 2018 at 03:19:52PM +0300, Marcel Apfelbaum wrote:
>
> Hi Yuval,
>
> On 07/16/2018 10:40 AM, Yuval Shaia wrote:
> > There is no use in the memory allocated for non-dma MR (one with
> > host_virt equals to NULL).
>
> No need for the (one with...)
Will remove.
>
> > Delete the code that allocates it.
> >
> > Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> > ---
> > hw/rdma/rdma_rm.c | 52 +++++++++++++++++++----------------------------
> > 1 file changed, 21 insertions(+), 31 deletions(-)
> >
> > diff --git a/hw/rdma/rdma_rm.c b/hw/rdma/rdma_rm.c
> > index 7403d24674..bf4a5c71b4 100644
> > --- a/hw/rdma/rdma_rm.c
> > +++ b/hw/rdma/rdma_rm.c
> > @@ -144,8 +144,6 @@ int rdma_rm_alloc_mr(RdmaDeviceResources *dev_res, uint32_t pd_handle,
> > RdmaRmMR *mr;
> > int ret = 0;
> > RdmaRmPD *pd;
> > - void *addr;
> > - size_t length;
> > pd = rdma_rm_get_pd(dev_res, pd_handle);
> > if (!pd) {
> > @@ -158,40 +156,29 @@ int rdma_rm_alloc_mr(RdmaDeviceResources *dev_res, uint32_t pd_handle,
> > pr_dbg("Failed to allocate obj in table\n");
> > return -ENOMEM;
> > }
> > + pr_dbg("mr_handle=%d\n", *mr_handle);
> > - if (!host_virt) {
> > - /* TODO: This is my guess but not so sure that this needs to be
> > - * done */
> > - length = TARGET_PAGE_SIZE;
> > - addr = g_malloc(length);
> > - } else {
> > + pr_dbg("host_virt=0x%p\n", host_virt);
> > + pr_dbg("guest_start=0x%" PRIx64 "\n", guest_start);
> > + pr_dbg("length=%zu\n", guest_length);
> > +
> > + if (host_virt) {
> > mr->virt = host_virt;
> > - pr_dbg("host_virt=0x%p\n", mr->virt);
> > - mr->length = guest_length;
> > - pr_dbg("length=%zu\n", guest_length);
> > mr->start = guest_start;
[1]
> > - pr_dbg("guest_start=0x%" PRIx64 "\n", mr->start);
> > -
> > - length = mr->length;
> > - addr = mr->virt;
> > - }
> > + mr->length = guest_length;
> > - ret = rdma_backend_create_mr(&mr->backend_mr, &pd->backend_pd, addr, length,
> > - access_flags);
> > - if (ret) {
> > - pr_dbg("Fail in rdma_backend_create_mr, err=%d\n", ret);
> > - ret = -EIO;
> > - goto out_dealloc_mr;
> > + ret = rdma_backend_create_mr(&mr->backend_mr, &pd->backend_pd, mr->virt,
> > + mr->length, access_flags);
> > + if (ret) {
> > + pr_dbg("Fail in rdma_backend_create_mr, err=%d\n", ret);
> > + ret = -EIO;
> > + goto out_dealloc_mr;
> > + }
> > }
> > - if (!host_virt) {
> > - *lkey = mr->lkey = rdma_backend_mr_lkey(&mr->backend_mr);
> > - *rkey = mr->rkey = rdma_backend_mr_rkey(&mr->backend_mr);
> > - } else {
> > - /* We keep mr_handle in lkey so send and recv get get mr ptr */
> > - *lkey = *mr_handle;
> > - *rkey = -1;
> > - }
> > + /* We keep mr_handle in lkey so send and recv get get mr ptr */
> > + *lkey = *mr_handle;
> > + *rkey = -1;
>
> Before this change rkey whould get a value when !host_virt.
> But I suppose is OK since Remote DMA operations are not implemented yet.
The entire code that handled the case where host_virt is NULL was wrong
thus removed.
And yes, RDMA verb is not yet implemented so rkey is anyway not needed.
>
> > mr->pd_handle = pd_handle;
> > @@ -214,7 +201,10 @@ void rdma_rm_dealloc_mr(RdmaDeviceResources *dev_res, uint32_t mr_handle)
> > if (mr) {
> > rdma_backend_destroy_mr(&mr->backend_mr);
> > - munmap(mr->virt, mr->length);
> > + pr_dbg("start=0x%" PRIx64 "\n", mr->start);
> > + if (mr->start) {
>
> When is the mr->start inited?
res_tbl_alloc cleans the MR before giving it to caller so we expect
mr->start to be NULL.
Then if host_virt is given then mr->start is set to guest virtual address
[1].
>
> Thanks,
> Marcel
>
> > + munmap(mr->virt, mr->length);
> > + }
> > res_tbl_dealloc(&dev_res->mr_tbl, mr_handle);
> > }
> > }
>
next prev parent reply other threads:[~2018-08-05 14:56 UTC|newest]
Thread overview: 30+ messages / expand[flat|nested] mbox.gz Atom feed top
2018-07-16 7:40 [Qemu-devel] [PATCH 00/13] Misc fixes for pvrdma device Yuval Shaia
2018-07-16 7:40 ` [Qemu-devel] [PATCH 01/13] hw/rdma: Make distinction between device init and start modes Yuval Shaia
2018-07-24 12:08 ` Marcel Apfelbaum
2018-07-24 19:29 ` Yuval Shaia
2018-07-24 19:53 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 02/13] hw/pvrdma: Bugfix - provide the correct attr_mask to query_qp Yuval Shaia
2018-07-16 10:38 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 03/13] hw/rdma: Modify debug macros Yuval Shaia
2018-07-24 12:10 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 04/13] hw/pvrdma: Clean CQE before use Yuval Shaia
2018-07-16 10:41 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 05/13] hw/pvrdma: Make default pkey 0xFFFF Yuval Shaia
2018-07-16 10:42 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 06/13] hw/rdma: Get rid of unneeded structure Yuval Shaia
2018-07-16 10:44 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 07/13] hw/rdma: Do not allocate memory for non-dma MR Yuval Shaia
2018-07-24 12:19 ` Marcel Apfelbaum
2018-08-05 14:56 ` Yuval Shaia [this message]
2018-07-16 7:40 ` [Qemu-devel] [PATCH 08/13] hw/rdma: Reorder resource cleanup Yuval Shaia
2018-07-16 10:44 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 09/13] hw/pvrdma: Cosmetic change - indent right Yuval Shaia
2018-07-16 10:45 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 10/13] hw/rdma: Cosmetic change - move to generic function Yuval Shaia
2018-07-16 10:46 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 11/13] hw/rdma: Print backend QP number in hex format Yuval Shaia
2018-07-16 10:46 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 12/13] hw/rdma: Bugfix: Support non-aligned buffers Yuval Shaia
2018-07-24 12:22 ` Marcel Apfelbaum
2018-07-16 7:40 ` [Qemu-devel] [PATCH 13/13] hw/rdma: Save pci dev in backend_dev Yuval Shaia
2018-07-16 10:49 ` Marcel Apfelbaum
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=20180805145634.GA22209@lap1 \
--to=yuval.shaia@oracle.com \
--cc=marcel.apfelbaum@gmail.com \
--cc=qemu-devel@nongnu.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.