All of lore.kernel.org
 help / color / mirror / Atom feed
From: Marcel Apfelbaum <marcel.apfelbaum@gmail.com>
To: Yuval Shaia <yuval.shaia@oracle.com>, qemu-devel@nongnu.org
Subject: Re: [Qemu-devel] [PATCH 12/13] hw/rdma: Bugfix: Support non-aligned buffers
Date: Tue, 24 Jul 2018 15:22:19 +0300	[thread overview]
Message-ID: <7ec58359-daf7-0f5b-7cb8-0a4d7032fd29@gmail.com> (raw)
In-Reply-To: <20180716074038.3364-13-yuval.shaia@oracle.com>



On 07/16/2018 10:40 AM, Yuval Shaia wrote:
> RDMA applications can provide non-aligned buffers to be registered. In
> such case the DMA address passed by driver is pointing to the beginning
> of the physical address of the mapped page so we can't distinguish
> between two addresses from the same page.
>
> Fix it by keeping the offset of the virtual address in mr->virt.
>
> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> ---
>   hw/rdma/rdma_rm.c        | 2 ++
>   hw/rdma/vmw/pvrdma_cmd.c | 1 +
>   2 files changed, 3 insertions(+)
>
> diff --git a/hw/rdma/rdma_rm.c b/hw/rdma/rdma_rm.c
> index 859c900003..8d59a42cd1 100644
> --- a/hw/rdma/rdma_rm.c
> +++ b/hw/rdma/rdma_rm.c
> @@ -166,6 +166,7 @@ int rdma_rm_alloc_mr(RdmaDeviceResources *dev_res, uint32_t pd_handle,
>           mr->virt = host_virt;
>           mr->start = guest_start;
>           mr->length = guest_length;
> +        mr->virt += (mr->start & (TARGET_PAGE_SIZE - 1));
>   
>           ret = rdma_backend_create_mr(&mr->backend_mr, &pd->backend_pd, mr->virt,
>                                        mr->length, access_flags);
> @@ -203,6 +204,7 @@ void rdma_rm_dealloc_mr(RdmaDeviceResources *dev_res, uint32_t mr_handle)
>           rdma_backend_destroy_mr(&mr->backend_mr);
>           pr_dbg("start=0x%" PRIx64 "\n", mr->start);
>           if (mr->start) {
> +            mr->virt -= (mr->start & (TARGET_PAGE_SIZE - 1));
>               munmap(mr->virt, mr->length);
>           }
>           res_tbl_dealloc(&dev_res->mr_tbl, mr_handle);
> diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c
> index bb898265a3..4ff242e793 100644
> --- a/hw/rdma/vmw/pvrdma_cmd.c
> +++ b/hw/rdma/vmw/pvrdma_cmd.c
> @@ -59,6 +59,7 @@ static void *pvrdma_map_to_pdir(PCIDevice *pdev, uint64_t pdir_dma,
>       }
>   
>       host_virt = mremap(curr_page, 0, length, MREMAP_MAYMOVE);
> +    pr_dbg("mremap %p -> %p\n", curr_page, host_virt);
>       if (host_virt == MAP_FAILED) {
>           host_virt = NULL;
>           error_report("PVRDMA: Failed to remap memory for host_virt");

Nice catch!

Reviewed-by: Marcel Apfelbaum<marcel.apfelbaum@gmail.com>

Thanks,
Marcel

  reply	other threads:[~2018-07-24 12:22 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
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 [this message]
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=7ec58359-daf7-0f5b-7cb8-0a4d7032fd29@gmail.com \
    --to=marcel.apfelbaum@gmail.com \
    --cc=qemu-devel@nongnu.org \
    --cc=yuval.shaia@oracle.com \
    /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.