[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
Re: [Qemu-trivial] [PATCH 1/3] hw/rdma: Change host_virt to void *
From: |
Philippe Mathieu-Daudé |
Subject: |
Re: [Qemu-trivial] [PATCH 1/3] hw/rdma: Change host_virt to void * |
Date: |
Thu, 22 Mar 2018 05:25:26 -0300 |
User-agent: |
Mozilla/5.0 (X11; Linux x86_64; rv:52.0) Gecko/20100101 Thunderbird/52.6.0 |
On 03/21/2018 06:10 PM, Yuval Shaia wrote:
> To avoid compilation warnings on 32-bit machines:
> rdma_backend.c: In function 'rdma_backend_create_mr':
> rdma_backend.c:409:37: error: cast to pointer from integer of different
> size [-Werror=int-to-pointer-cast]
> mr->ibmr = ibv_reg_mr(pd->ibpd, (void *)addr, length, access);
>
> Reported-by: Eric Blake <address@hidden>
> Signed-off-by: Yuval Shaia <address@hidden>
Reviewed-by: Philippe Mathieu-Daudé <address@hidden>
> ---
> hw/rdma/rdma_backend.c | 8 ++++----
> hw/rdma/rdma_backend.h | 2 +-
> hw/rdma/rdma_rm.c | 10 +++++-----
> hw/rdma/rdma_rm_defs.h | 2 +-
> 4 files changed, 11 insertions(+), 11 deletions(-)
>
> diff --git a/hw/rdma/rdma_backend.c b/hw/rdma/rdma_backend.c
> index e306fba534..f1a37ba4a2 100644
> --- a/hw/rdma/rdma_backend.c
> +++ b/hw/rdma/rdma_backend.c
> @@ -222,7 +222,7 @@ static int build_host_sge_array(RdmaDeviceResources
> *rdma_dev_res,
> return VENDOR_ERR_INVLKEY | ssge[ssge_idx].lkey;
> }
>
> - dsge->addr = mr->user_mr.host_virt + ssge[ssge_idx].addr -
> + dsge->addr = (uintptr_t)mr->user_mr.host_virt + ssge[ssge_idx].addr -
> mr->user_mr.guest_start;
> dsge->length = ssge[ssge_idx].length;
> dsge->lkey = rdma_backend_mr_lkey(&mr->backend_mr);
> @@ -401,12 +401,12 @@ void rdma_backend_destroy_pd(RdmaBackendPD *pd)
> }
> }
>
> -int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, uint64_t
> addr,
> +int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
> size_t length, int access)
> {
> - pr_dbg("addr=0x%lx\n", addr);
> + pr_dbg("addr=0x%p\n", addr);
> pr_dbg("len=%ld\n", length);
> - mr->ibmr = ibv_reg_mr(pd->ibpd, (void *)addr, length, access);
> + mr->ibmr = ibv_reg_mr(pd->ibpd, addr, length, access);
> if (mr->ibmr) {
> pr_dbg("lkey=0x%x\n", mr->ibmr->lkey);
> pr_dbg("rkey=0x%x\n", mr->ibmr->rkey);
> diff --git a/hw/rdma/rdma_backend.h b/hw/rdma/rdma_backend.h
> index 68f2b05ca7..07f6fed768 100644
> --- a/hw/rdma/rdma_backend.h
> +++ b/hw/rdma/rdma_backend.h
> @@ -61,7 +61,7 @@ int rdma_backend_query_port(RdmaBackendDev *backend_dev,
> int rdma_backend_create_pd(RdmaBackendDev *backend_dev, RdmaBackendPD *pd);
> void rdma_backend_destroy_pd(RdmaBackendPD *pd);
>
> -int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, uint64_t
> addr,
> +int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
> size_t length, int access);
> void rdma_backend_destroy_mr(RdmaBackendMR *mr);
>
> diff --git a/hw/rdma/rdma_rm.c b/hw/rdma/rdma_rm.c
> index b5fc45ddab..296e40518e 100644
> --- a/hw/rdma/rdma_rm.c
> +++ b/hw/rdma/rdma_rm.c
> @@ -146,7 +146,7 @@ int rdma_rm_alloc_mr(RdmaDeviceResources *dev_res,
> uint32_t pd_handle,
> RdmaRmMR *mr;
> int ret = 0;
> RdmaRmPD *pd;
> - uint64_t addr;
> + void *addr;
> size_t length;
>
> pd = rdma_rm_get_pd(dev_res, pd_handle);
> @@ -165,10 +165,10 @@ int rdma_rm_alloc_mr(RdmaDeviceResources *dev_res,
> uint32_t pd_handle,
> /* TODO: This is my guess but not so sure that this needs to be
> * done */
> length = TARGET_PAGE_SIZE;
> - addr = (uint64_t)g_malloc(length);
> + addr = g_malloc(length);
> } else {
> - mr->user_mr.host_virt = (uint64_t) host_virt;
> - pr_dbg("host_virt=0x%lx\n", mr->user_mr.host_virt);
> + mr->user_mr.host_virt = host_virt;
> + pr_dbg("host_virt=0x%p\n", mr->user_mr.host_virt);
> mr->user_mr.length = guest_length;
> pr_dbg("length=0x%lx\n", guest_length);
> mr->user_mr.guest_start = guest_start;
> @@ -216,7 +216,7 @@ void rdma_rm_dealloc_mr(RdmaDeviceResources *dev_res,
> uint32_t mr_handle)
>
> if (mr) {
> rdma_backend_destroy_mr(&mr->backend_mr);
> - munmap((void *)mr->user_mr.host_virt, mr->user_mr.length);
> + munmap(mr->user_mr.host_virt, mr->user_mr.length);
> res_tbl_dealloc(&dev_res->mr_tbl, mr_handle);
> }
> }
> diff --git a/hw/rdma/rdma_rm_defs.h b/hw/rdma/rdma_rm_defs.h
> index 6522dca68f..fc646da61f 100644
> --- a/hw/rdma/rdma_rm_defs.h
> +++ b/hw/rdma/rdma_rm_defs.h
> @@ -56,7 +56,7 @@ typedef struct RdmaRmCQ {
> } RdmaRmCQ;
>
> typedef struct RdmaRmUserMR {
> - uint64_t host_virt;
> + void *host_virt;
> uint64_t guest_start;
> size_t length;
> } RdmaRmUserMR;
>
- [Qemu-trivial] [PATCH 0/3] hw/rdma: Fix 32-bit compilation, Yuval Shaia, 2018/03/21
- [Qemu-trivial] [PATCH 1/3] hw/rdma: Change host_virt to void *, Yuval Shaia, 2018/03/21
- Re: [Qemu-trivial] [PATCH 1/3] hw/rdma: Change host_virt to void *,
Philippe Mathieu-Daudé <=
- [Qemu-trivial] [PATCH 2/3] hw/rdma: Use correct print format in CHK_ATTR macro, Yuval Shaia, 2018/03/21
- [Qemu-trivial] [PATCH 3/3] hw/rdma: Fix 32-bit compilation, Yuval Shaia, 2018/03/21
- Re: [Qemu-trivial] [PATCH 0/3] hw/rdma: Fix 32-bit compilation, Eric Blake, 2018/03/21
- Re: [Qemu-trivial] [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation, no-reply, 2018/03/22