diff mbox series

[1/3] hw/rdma: Change host_virt to void *

Message ID 20180321211056.3339-2-yuval.shaia@oracle.com
State New
Headers show
Series hw/rdma: Fix 32-bit compilation | expand

Commit Message

Yuval Shaia March 21, 2018, 9:10 p.m. UTC
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 <eblake@redhat.com>
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
---
 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(-)

Comments

Philippe Mathieu-Daudé March 22, 2018, 8:25 a.m. UTC | #1
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 <eblake@redhat.com>
> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>

Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>

> ---
>  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;
>
diff mbox series

Patch

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;