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: Eric Blake <eblake@redhat.com>
Tested-by: Eric Blake <eblake@redhat.com>
Reviewed-by: Philippe Mathieu-Daudé <f4bug@amsat.org>
Message-Id: <
20180322095220.9976-2-yuval.shaia@oracle.com>
Signed-off-by: Marcel Apfelbaum <marcel@redhat.com>
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);
}
}
-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);
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);
RdmaRmMR *mr;
int ret = 0;
RdmaRmPD *pd;
- uint64_t addr;
+ void *addr;
size_t length;
pd = rdma_rm_get_pd(dev_res, 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;
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);
}
}
} RdmaRmCQ;
typedef struct RdmaRmUserMR {
- uint64_t host_virt;
+ void *host_virt;
uint64_t guest_start;
size_t length;
} RdmaRmUserMR;