All of lore.kernel.org
 help / color / mirror / Atom feed
* [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation
@ 2018-03-21 21:10 Yuval Shaia
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 1/3] hw/rdma: Change host_virt to void * Yuval Shaia
                   ` (4 more replies)
  0 siblings, 5 replies; 11+ messages in thread
From: Yuval Shaia @ 2018-03-21 21:10 UTC (permalink / raw)
  To: yuval.shaia, marcel, eblake, qemu-devel, qemu-trivial

Hi all,
Following are three patches which fixes various compilation warnings and
errors detected when compiling rdma device in 32bit host.

All three patches are based on Eric Blake patch for rdma device.
Thanks!

Patch #1: Change host_virt to void *
Low level IB verbs library accept void * argument so let's make sure this
is what we supply. This issue reported by Eric Blake.

Patch #2: Use correct print format in CHK_ATTR macro
This macro can utilize the given 'format' argument and not need to cast all
members to u64. This patch is an alternative to suggested patch by Eric
Blake.

Patch #3: Fix 32-bit compilation
Based on Eric Blake patch this patch replaces all %ld/%lx with the platform
independent PRIx64/PRId64 format.

Again, thanks Eric Blake for the report.

Yuval Shaia (3):
  hw/rdma: Change host_virt to void *
  hw/rdma: Use correct print format in CHK_ATTR macro
  hw/rdma: Fix 32-bit compilation

 hw/rdma/rdma_backend.c        | 33 +++++++++++++++++----------------
 hw/rdma/rdma_backend.h        |  2 +-
 hw/rdma/rdma_rm.c             | 14 +++++++-------
 hw/rdma/rdma_rm_defs.h        |  2 +-
 hw/rdma/rdma_utils.c          |  6 +++---
 hw/rdma/vmw/pvrdma_cmd.c      |  8 ++++----
 hw/rdma/vmw/pvrdma_dev_ring.c |  6 +++---
 hw/rdma/vmw/pvrdma_dev_ring.h |  2 +-
 hw/rdma/vmw/pvrdma_main.c     | 25 +++++++++++++------------
 hw/rdma/vmw/pvrdma_qp_ops.c   |  6 +++---
 10 files changed, 53 insertions(+), 51 deletions(-)

-- 
2.13.6

^ permalink raw reply	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 1/3] hw/rdma: Change host_virt to void *
  2018-03-21 21:10 [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
@ 2018-03-21 21:10 ` Yuval Shaia
  2018-03-22  8:25   ` [Qemu-devel] [Qemu-trivial] " Philippe Mathieu-Daudé
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 2/3] hw/rdma: Use correct print format in CHK_ATTR macro Yuval Shaia
                   ` (3 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Yuval Shaia @ 2018-03-21 21:10 UTC (permalink / raw)
  To: yuval.shaia, marcel, eblake, qemu-devel, qemu-trivial

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(-)

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;
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 2/3] hw/rdma: Use correct print format in CHK_ATTR macro
  2018-03-21 21:10 [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 1/3] hw/rdma: Change host_virt to void * Yuval Shaia
@ 2018-03-21 21:10 ` Yuval Shaia
  2018-03-22  8:26   ` Philippe Mathieu-Daudé
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 3/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
                   ` (2 subsequent siblings)
  4 siblings, 1 reply; 11+ messages in thread
From: Yuval Shaia @ 2018-03-21 21:10 UTC (permalink / raw)
  To: yuval.shaia, marcel, eblake, qemu-devel, qemu-trivial

Macro should not cast the given variable to u64 instead it should use
the supplied format argument (fmt).

Reported-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
---
 hw/rdma/rdma_backend.c | 4 ++--
 1 file changed, 2 insertions(+), 2 deletions(-)

diff --git a/hw/rdma/rdma_backend.c b/hw/rdma/rdma_backend.c
index f1a37ba4a2..0391a7dd95 100644
--- a/hw/rdma/rdma_backend.c
+++ b/hw/rdma/rdma_backend.c
@@ -656,8 +656,8 @@ void rdma_backend_destroy_qp(RdmaBackendQP *qp)
 #define CHK_ATTR(req, dev, member, fmt) ({ \
     pr_dbg("%s="fmt","fmt"\n", #member, dev.member, req->member); \
     if (req->member > dev.member) { \
-        warn_report("%s = 0x%lx is higher than host device capability 0x%lx", \
-                    #member, (uint64_t)req->member, (uint64_t)dev.member); \
+        warn_report("%s = "fmt" is higher than host device capability "fmt, \
+                    #member, req->member, dev.member); \
         req->member = dev.member; \
     } \
     pr_dbg("%s="fmt"\n", #member, req->member); })
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* [Qemu-devel] [PATCH 3/3] hw/rdma: Fix 32-bit compilation
  2018-03-21 21:10 [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 1/3] hw/rdma: Change host_virt to void * Yuval Shaia
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 2/3] hw/rdma: Use correct print format in CHK_ATTR macro Yuval Shaia
@ 2018-03-21 21:10 ` Yuval Shaia
  2018-03-22  8:31   ` [Qemu-devel] [Qemu-trivial] " Philippe Mathieu-Daudé
  2018-03-21 22:24 ` [Qemu-devel] [PATCH 0/3] " Eric Blake
  2018-03-22  5:07 ` no-reply
  4 siblings, 1 reply; 11+ messages in thread
From: Yuval Shaia @ 2018-03-21 21:10 UTC (permalink / raw)
  To: yuval.shaia, marcel, eblake, qemu-devel, qemu-trivial

Use the correct printf formats, so that a 32-bit compile doesn't spit
out lots of warnings about %lx being incompatible with uint64_t.

Suggested-by: Eric Blake <eblake@redhat.com>
Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
---
 hw/rdma/rdma_backend.c        | 21 +++++++++++----------
 hw/rdma/rdma_rm.c             |  4 ++--
 hw/rdma/rdma_utils.c          |  6 +++---
 hw/rdma/vmw/pvrdma_cmd.c      |  8 ++++----
 hw/rdma/vmw/pvrdma_dev_ring.c |  6 +++---
 hw/rdma/vmw/pvrdma_dev_ring.h |  2 +-
 hw/rdma/vmw/pvrdma_main.c     | 25 +++++++++++++------------
 hw/rdma/vmw/pvrdma_qp_ops.c   |  6 +++---
 8 files changed, 40 insertions(+), 38 deletions(-)

diff --git a/hw/rdma/rdma_backend.c b/hw/rdma/rdma_backend.c
index 0391a7dd95..9e427306b3 100644
--- a/hw/rdma/rdma_backend.c
+++ b/hw/rdma/rdma_backend.c
@@ -62,12 +62,13 @@ static void poll_cq(RdmaDeviceResources *rdma_dev_res, struct ibv_cq *ibcq)
         pr_dbg("Got %d completion(s) from cq %p\n", ne, ibcq);
 
         for (i = 0; i < ne; i++) {
-            pr_dbg("wr_id=0x%lx\n", wc[i].wr_id);
+            pr_dbg("wr_id=0x%" PRIx64 "\n", wc[i].wr_id);
             pr_dbg("status=%d\n", wc[i].status);
 
             bctx = rdma_rm_get_cqe_ctx(rdma_dev_res, wc[i].wr_id);
             if (unlikely(!bctx)) {
-                pr_dbg("Error: Failed to find ctx for req %ld\n", wc[i].wr_id);
+                pr_dbg("Error: Failed to find ctx for req %" PRId64 "\n",
+                       wc[i].wr_id);
                 continue;
             }
             pr_dbg("Processing %s CQE\n", bctx->is_tx_req ? "send" : "recv");
@@ -176,7 +177,7 @@ static struct ibv_ah *create_ah(RdmaBackendDev *backend_dev, struct ibv_pd *pd,
             g_hash_table_insert(ah_hash, ah_key, ah);
         } else {
             g_bytes_unref(ah_key);
-            pr_dbg("ibv_create_ah failed for gid <%lx %lx>\n",
+            pr_dbg("ibv_create_ah failed for gid <0x%" PRIx64 ", 0x%" PRIx64 ">\n",
                     be64_to_cpu(dgid->global.subnet_prefix),
                     be64_to_cpu(dgid->global.interface_id));
         }
@@ -227,8 +228,8 @@ static int build_host_sge_array(RdmaDeviceResources *rdma_dev_res,
         dsge->length = ssge[ssge_idx].length;
         dsge->lkey = rdma_backend_mr_lkey(&mr->backend_mr);
 
-        pr_dbg("ssge->addr=0x%lx\n", (uint64_t)ssge[ssge_idx].addr);
-        pr_dbg("dsge->addr=0x%lx\n", dsge->addr);
+        pr_dbg("ssge->addr=0x%" PRIx64 "\n", ssge[ssge_idx].addr);
+        pr_dbg("dsge->addr=0x%" PRIx64 "\n", dsge->addr);
         pr_dbg("dsge->length=%d\n", dsge->length);
         pr_dbg("dsge->lkey=0x%x\n", dsge->lkey);
 
@@ -405,7 +406,7 @@ int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
                            size_t length, int access)
 {
     pr_dbg("addr=0x%p\n", addr);
-    pr_dbg("len=%ld\n", length);
+    pr_dbg("len=%zd\n", length);
     mr->ibmr = ibv_reg_mr(pd->ibpd, addr, length, access);
     if (mr->ibmr) {
         pr_dbg("lkey=0x%x\n", mr->ibmr->lkey);
@@ -562,7 +563,7 @@ int rdma_backend_qp_state_rtr(RdmaBackendDev *backend_dev, RdmaBackendQP *qp,
 
     switch (qp_type) {
     case IBV_QPT_RC:
-        pr_dbg("dgid=0x%lx,%lx\n",
+        pr_dbg("dgid=0x%" PRIx64 ",%" PRIx64 "\n",
                be64_to_cpu(ibv_gid.global.subnet_prefix),
                be64_to_cpu(ibv_gid.global.interface_id));
         pr_dbg("dqpn=0x%x\n", dqpn);
@@ -669,7 +670,7 @@ static int init_device_caps(RdmaBackendDev *backend_dev,
         return -EIO;
     }
 
-    CHK_ATTR(dev_attr, backend_dev->dev_attr, max_mr_size, "%ld");
+    CHK_ATTR(dev_attr, backend_dev->dev_attr, max_mr_size, "%" PRId64 );
     CHK_ATTR(dev_attr, backend_dev->dev_attr, max_qp, "%d");
     CHK_ATTR(dev_attr, backend_dev->dev_attr, max_sge, "%d");
     CHK_ATTR(dev_attr, backend_dev->dev_attr, max_qp_wr, "%d");
@@ -782,9 +783,9 @@ int rdma_backend_init(RdmaBackendDev *backend_dev,
         ret = -EIO;
         goto out_destroy_comm_channel;
     }
-    pr_dbg("subnet_prefix=0x%lx\n",
+    pr_dbg("subnet_prefix=0x%" PRIx64 "\n",
            be64_to_cpu(backend_dev->gid.global.subnet_prefix));
-    pr_dbg("interface_id=0x%lx\n",
+    pr_dbg("interface_id=0x%" PRIx64 "\n",
            be64_to_cpu(backend_dev->gid.global.interface_id));
 
     snprintf(thread_name, sizeof(thread_name), "rdma_comp_%s",
diff --git a/hw/rdma/rdma_rm.c b/hw/rdma/rdma_rm.c
index 296e40518e..8da510c0d2 100644
--- a/hw/rdma/rdma_rm.c
+++ b/hw/rdma/rdma_rm.c
@@ -170,9 +170,9 @@ int rdma_rm_alloc_mr(RdmaDeviceResources *dev_res, uint32_t pd_handle,
         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);
+        pr_dbg("length=%zd\n", guest_length);
         mr->user_mr.guest_start = guest_start;
-        pr_dbg("guest_start=0x%lx\n", mr->user_mr.guest_start);
+        pr_dbg("guest_start=0x%" PRIx64 "\n", mr->user_mr.guest_start);
 
         length = mr->user_mr.length;
         addr = mr->user_mr.host_virt;
diff --git a/hw/rdma/rdma_utils.c b/hw/rdma/rdma_utils.c
index 0e5caffd40..d713f635f1 100644
--- a/hw/rdma/rdma_utils.c
+++ b/hw/rdma/rdma_utils.c
@@ -27,8 +27,8 @@ void *rdma_pci_dma_map(PCIDevice *dev, dma_addr_t addr, dma_addr_t plen)
 
     p = pci_dma_map(dev, addr, &len, DMA_DIRECTION_TO_DEVICE);
     if (!p) {
-        pr_dbg("Fail in pci_dma_map, addr=0x%llx, len=%ld\n",
-               (long long unsigned int)addr, len);
+        pr_dbg("Fail in pci_dma_map, addr=0x%" PRIx64 ", len=%" PRId64 "\n",
+               addr, len);
         return NULL;
     }
 
@@ -37,7 +37,7 @@ void *rdma_pci_dma_map(PCIDevice *dev, dma_addr_t addr, dma_addr_t plen)
         return NULL;
     }
 
-    pr_dbg("0x%llx -> %p (len=%ld)\n", (long long unsigned int)addr, p, len);
+    pr_dbg("0x%" PRIx64 " -> %p (len=% " PRId64 ")\n", addr, p, len);
 
     return p;
 }
diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c
index 293dfed29f..dbdd002cc2 100644
--- a/hw/rdma/vmw/pvrdma_cmd.c
+++ b/hw/rdma/vmw/pvrdma_cmd.c
@@ -85,7 +85,7 @@ static void *pvrdma_map_to_pdir(PCIDevice *pdev, uint64_t pdir_dma,
             }
         }
 
-        pr_dbg("guest_dma[%d]=0x%lx\n", addr_idx, tbl[tbl_idx]);
+        pr_dbg("guest_dma[%d]=0x%" PRIx64 "\n", addr_idx, tbl[tbl_idx]);
 
         curr_page = rdma_pci_dma_map(pdev, (dma_addr_t)tbl[tbl_idx],
                                      TARGET_PAGE_SIZE);
@@ -285,7 +285,7 @@ static int create_cq_ring(PCIDevice *pci_dev , PvrdmaRing **ring,
         goto out_free_ring;
     }
 
-    sprintf(ring_name, "cq_ring_%lx", pdir_dma);
+    sprintf(ring_name, "cq_ring_%" PRIx64, pdir_dma);
     rc = pvrdma_ring_init(r, ring_name, pci_dev, &r->ring_state[1],
                           cqe, sizeof(struct pvrdma_cqe),
                           /* first page is ring state */
@@ -415,7 +415,7 @@ static int create_qp_rings(PCIDevice *pci_dev, uint64_t pdir_dma,
     wqe_sz = pow2ceil(sizeof(struct pvrdma_sq_wqe_hdr) +
                       sizeof(struct pvrdma_sge) * smax_sge - 1);
 
-    sprintf(ring_name, "qp_sring_%lx", pdir_dma);
+    sprintf(ring_name, "qp_sring_%" PRIx64, pdir_dma);
     rc = pvrdma_ring_init(sr, ring_name, pci_dev, sr->ring_state,
                           scqe, wqe_sz, (dma_addr_t *)&tbl[1], spages);
     if (rc) {
@@ -426,7 +426,7 @@ static int create_qp_rings(PCIDevice *pci_dev, uint64_t pdir_dma,
     rr->ring_state = &sr->ring_state[1];
     wqe_sz = pow2ceil(sizeof(struct pvrdma_rq_wqe_hdr) +
                       sizeof(struct pvrdma_sge) * rmax_sge - 1);
-    sprintf(ring_name, "qp_rring_%lx", pdir_dma);
+    sprintf(ring_name, "qp_rring_%" PRIx64, pdir_dma);
     rc = pvrdma_ring_init(rr, ring_name, pci_dev, rr->ring_state,
                           rcqe, wqe_sz, (dma_addr_t *)&tbl[1 + spages], rpages);
     if (rc) {
diff --git a/hw/rdma/vmw/pvrdma_dev_ring.c b/hw/rdma/vmw/pvrdma_dev_ring.c
index ec309dad55..be3d651139 100644
--- a/hw/rdma/vmw/pvrdma_dev_ring.c
+++ b/hw/rdma/vmw/pvrdma_dev_ring.c
@@ -23,7 +23,7 @@
 
 int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
                      struct pvrdma_ring *ring_state, uint32_t max_elems,
-                     size_t elem_sz, dma_addr_t *tbl, dma_addr_t npages)
+                     size_t elem_sz, dma_addr_t *tbl, uint32_t npages)
 {
     int i;
     int rc = 0;
@@ -35,8 +35,8 @@ int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
     ring->ring_state = ring_state;
     ring->max_elems = max_elems;
     ring->elem_sz = elem_sz;
-    pr_dbg("ring->elem_sz=%ld\n", ring->elem_sz);
-    pr_dbg("npages=%ld\n", npages);
+    pr_dbg("ring->elem_sz=%zd\n", ring->elem_sz);
+    pr_dbg("npages=%d\n", npages);
     /* TODO: Give a moment to think if we want to redo driver settings
     atomic_set(&ring->ring_state->prod_tail, 0);
     atomic_set(&ring->ring_state->cons_head, 0);
diff --git a/hw/rdma/vmw/pvrdma_dev_ring.h b/hw/rdma/vmw/pvrdma_dev_ring.h
index 02a590b86d..4a6752f08a 100644
--- a/hw/rdma/vmw/pvrdma_dev_ring.h
+++ b/hw/rdma/vmw/pvrdma_dev_ring.h
@@ -32,7 +32,7 @@ typedef struct PvrdmaRing {
 
 int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
                      struct pvrdma_ring *ring_state, uint32_t max_elems,
-                     size_t elem_sz, dma_addr_t *tbl, dma_addr_t npages);
+                     size_t elem_sz, dma_addr_t *tbl, uint32_t npages);
 void *pvrdma_ring_next_elem_read(PvrdmaRing *ring);
 void pvrdma_ring_read_inc(PvrdmaRing *ring);
 void *pvrdma_ring_next_elem_write(PvrdmaRing *ring);
diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c
index 99787812ba..ee6981a6a8 100644
--- a/hw/rdma/vmw/pvrdma_main.c
+++ b/hw/rdma/vmw/pvrdma_main.c
@@ -236,7 +236,7 @@ static void init_dsr_dev_caps(PVRDMADev *dev)
     dsr = dev->dsr_info.dsr;
 
     dsr->caps.fw_ver = PVRDMA_FW_VERSION;
-    pr_dbg("fw_ver=0x%lx\n", dsr->caps.fw_ver);
+    pr_dbg("fw_ver=0x%" PRIx64 "\n", dsr->caps.fw_ver);
 
     dsr->caps.mode = PVRDMA_DEVICE_MODE_ROCE;
     pr_dbg("mode=%d\n", dsr->caps.mode);
@@ -261,11 +261,10 @@ static void init_dsr_dev_caps(PVRDMADev *dev)
     pr_dbg("gid_tbl_len=%d\n", dsr->caps.gid_tbl_len);
 
     dsr->caps.sys_image_guid = 0;
-    pr_dbg("sys_image_guid=%lx\n", dsr->caps.sys_image_guid);
+    pr_dbg("sys_image_guid=%" PRIx64 "\n", dsr->caps.sys_image_guid);
 
     dsr->caps.node_guid = cpu_to_be64(dev->node_guid);
-    pr_dbg("node_guid=%llx\n",
-           (long long unsigned int)be64_to_cpu(dsr->caps.node_guid));
+    pr_dbg("node_guid=%" PRIx64 "\n", be64_to_cpu(dsr->caps.node_guid));
 
     dsr->caps.phys_port_cnt = MAX_PORTS;
     pr_dbg("phys_port_cnt=%d\n", dsr->caps.phys_port_cnt);
@@ -343,8 +342,8 @@ static void regs_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
     /* pr_dbg("addr=0x%lx, val=0x%x, size=%d\n", addr, (uint32_t)val, size); */
 
     if (set_reg_val(dev, addr, val)) {
-        pr_err("Error trying to set REG value, addr=0x%lx, val=0x%lx\n",
-               (uint64_t)addr, val);
+        pr_err("Error trying to set REG value, addr=0x%" PRIx64 ", val=0x%" PRIx64 "\n",
+               addr, val);
         return;
     }
 
@@ -373,7 +372,7 @@ static void regs_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
         }
     break;
     case PVRDMA_REG_IMR:
-        pr_dbg("Interrupt mask=0x%lx\n", val);
+        pr_dbg("Interrupt mask=0x%" PRIx64 "\n", val);
         dev->interrupt_mask = val;
         break;
     case PVRDMA_REG_REQUEST:
@@ -404,7 +403,8 @@ static void uar_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
 
     switch (addr & 0xFFF) { /* Mask with 0xFFF as each UC gets page */
     case PVRDMA_UAR_QP_OFFSET:
-        pr_dbg("UAR QP command, addr=0x%x, val=0x%lx\n", (uint32_t)addr, val);
+        pr_dbg("UAR QP command, addr=0x%" PRIx64 ", val=0x%" PRIx64 "\n",
+               (uint64_t)addr, val);
         if (val & PVRDMA_UAR_QP_SEND) {
             pvrdma_qp_send(dev, val & PVRDMA_UAR_HANDLE_MASK);
         }
@@ -420,16 +420,17 @@ static void uar_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
                                   !!(val & PVRDMA_UAR_CQ_ARM_SOL));
         }
         if (val & PVRDMA_UAR_CQ_ARM_SOL) {
-            pr_dbg("UAR_CQ_ARM_SOL (%ld)\n", val & PVRDMA_UAR_HANDLE_MASK);
+            pr_dbg("UAR_CQ_ARM_SOL (%" PRIx64 ")\n",
+                   val & PVRDMA_UAR_HANDLE_MASK);
         }
         if (val & PVRDMA_UAR_CQ_POLL) {
-            pr_dbg("UAR_CQ_POLL (%ld)\n", val & PVRDMA_UAR_HANDLE_MASK);
+            pr_dbg("UAR_CQ_POLL (%" PRIx64 ")\n", val & PVRDMA_UAR_HANDLE_MASK);
             pvrdma_cq_poll(&dev->rdma_dev_res, val & PVRDMA_UAR_HANDLE_MASK);
         }
         break;
     default:
-        pr_err("Unsupported command, addr=0x%lx, val=0x%lx\n",
-               (uint64_t)addr, val);
+        pr_err("Unsupported command, addr=0x%" PRIx64 ", val=0x%" PRIx64 "\n",
+               addr, val);
         break;
     }
 }
diff --git a/hw/rdma/vmw/pvrdma_qp_ops.c b/hw/rdma/vmw/pvrdma_qp_ops.c
index f0a1f9eb02..ccada31b54 100644
--- a/hw/rdma/vmw/pvrdma_qp_ops.c
+++ b/hw/rdma/vmw/pvrdma_qp_ops.c
@@ -102,7 +102,7 @@ static void pvrdma_qp_ops_comp_handler(int status, unsigned int vendor_err,
     CompHandlerCtx *comp_ctx = (CompHandlerCtx *)ctx;
 
     pr_dbg("cq_handle=%d\n", comp_ctx->cq_handle);
-    pr_dbg("wr_id=%ld\n", comp_ctx->cqe.wr_id);
+    pr_dbg("wr_id=%" PRIx64 "\n", comp_ctx->cqe.wr_id);
     pr_dbg("status=%d\n", status);
     pr_dbg("vendor_err=0x%x\n", vendor_err);
     comp_ctx->cqe.status = status;
@@ -143,7 +143,7 @@ int pvrdma_qp_send(PVRDMADev *dev, uint32_t qp_handle)
     while (wqe) {
         CompHandlerCtx *comp_ctx;
 
-        pr_dbg("wr_id=%ld\n", wqe->hdr.wr_id);
+        pr_dbg("wr_id=%" PRIx64 "\n", wqe->hdr.wr_id);
 
         /* Prepare CQE */
         comp_ctx = g_malloc(sizeof(CompHandlerCtx));
@@ -187,7 +187,7 @@ int pvrdma_qp_recv(PVRDMADev *dev, uint32_t qp_handle)
     while (wqe) {
         CompHandlerCtx *comp_ctx;
 
-        pr_dbg("wr_id=%ld\n", wqe->hdr.wr_id);
+        pr_dbg("wr_id=%" PRIx64 "\n", wqe->hdr.wr_id);
 
         /* Prepare CQE */
         comp_ctx = g_malloc(sizeof(CompHandlerCtx));
-- 
2.13.6

^ permalink raw reply related	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation
  2018-03-21 21:10 [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
                   ` (2 preceding siblings ...)
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 3/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
@ 2018-03-21 22:24 ` Eric Blake
  2018-03-22  5:07 ` no-reply
  4 siblings, 0 replies; 11+ messages in thread
From: Eric Blake @ 2018-03-21 22:24 UTC (permalink / raw)
  To: Yuval Shaia, marcel, qemu-devel, qemu-trivial

On 03/21/2018 04:10 PM, Yuval Shaia wrote:
> Hi all,
> Following are three patches which fixes various compilation warnings and
> errors detected when compiling rdma device in 32bit host.
> 
> All three patches are based on Eric Blake patch for rdma device.
> Thanks!
> 
> Patch #1: Change host_virt to void *
> Low level IB verbs library accept void * argument so let's make sure this
> is what we supply. This issue reported by Eric Blake.
> 
> Patch #2: Use correct print format in CHK_ATTR macro
> This macro can utilize the given 'format' argument and not need to cast all
> members to u64. This patch is an alternative to suggested patch by Eric
> Blake.
> 
> Patch #3: Fix 32-bit compilation
> Based on Eric Blake patch this patch replaces all %ld/%lx with the platform
> independent PRIx64/PRId64 format.
> 
> Again, thanks Eric Blake for the report.
> 
> Yuval Shaia (3):
>    hw/rdma: Change host_virt to void *
>    hw/rdma: Use correct print format in CHK_ATTR macro

Your fix was nicer than my proposal.

>    hw/rdma: Fix 32-bit compilation

Reviewed-by: Eric Blake <eblake@redhat.com>

and it fixes the build on my 32-bit rawhide VM, so

Tested-by: Eric Blake <eblake@redhat.com>

-- 
Eric Blake, Principal Software Engineer
Red Hat, Inc.           +1-919-301-3266
Virtualization:  qemu.org | libvirt.org

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation
  2018-03-21 21:10 [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
                   ` (3 preceding siblings ...)
  2018-03-21 22:24 ` [Qemu-devel] [PATCH 0/3] " Eric Blake
@ 2018-03-22  5:07 ` no-reply
  2018-03-22  7:48   ` Marcel Apfelbaum
  4 siblings, 1 reply; 11+ messages in thread
From: no-reply @ 2018-03-22  5:07 UTC (permalink / raw)
  To: yuval.shaia; +Cc: famz, marcel, eblake, qemu-devel, qemu-trivial

Hi,

This series seems to have some coding style problems. See output below for
more information:

Type: series
Message-id: 20180321211056.3339-1-yuval.shaia@oracle.com
Subject: [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation

=== TEST SCRIPT BEGIN ===
#!/bin/bash

BASE=base
n=1
total=$(git log --oneline $BASE.. | wc -l)
failed=0

git config --local diff.renamelimit 0
git config --local diff.renames True
git config --local diff.algorithm histogram

commits="$(git log --format=%H --reverse $BASE..)"
for c in $commits; do
    echo "Checking PATCH $n/$total: $(git log -n 1 --format=%s $c)..."
    if ! git show $c --format=email | ./scripts/checkpatch.pl --mailback -; then
        failed=1
        echo
    fi
    n=$((n+1))
done

exit $failed
=== TEST SCRIPT END ===

Updating 3c8cf5a9c21ff8782164d1def7f44bd888713384
Switched to a new branch 'test'
7968402545 hw/rdma: Fix 32-bit compilation
3924e0635d hw/rdma: Use correct print format in CHK_ATTR macro
928edb0554 hw/rdma: Change host_virt to void *

=== OUTPUT BEGIN ===
Checking PATCH 1/3: hw/rdma: Change host_virt to void *...
Checking PATCH 2/3: hw/rdma: Use correct print format in CHK_ATTR macro...
Checking PATCH 3/3: hw/rdma: Fix 32-bit compilation...
WARNING: line over 80 characters
#40: FILE: hw/rdma/rdma_backend.c:180:
+            pr_dbg("ibv_create_ah failed for gid <0x%" PRIx64 ", 0x%" PRIx64 ">\n",

ERROR: space prohibited before that close parenthesis ')'
#78: FILE: hw/rdma/rdma_backend.c:673:
+    CHK_ATTR(dev_attr, backend_dev->dev_attr, max_mr_size, "%" PRId64 );

WARNING: line over 80 characters
#244: FILE: hw/rdma/vmw/pvrdma_main.c:345:
+        pr_err("Error trying to set REG value, addr=0x%" PRIx64 ", val=0x%" PRIx64 "\n",

total: 1 errors, 2 warnings, 248 lines checked

Your patch has style problems, please review.  If any of these errors
are false positives report them to the maintainer, see
CHECKPATCH in MAINTAINERS.

=== OUTPUT END ===

Test command exited with code: 1


---
Email generated automatically by Patchew [http://patchew.org/].
Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation
  2018-03-22  5:07 ` no-reply
@ 2018-03-22  7:48   ` Marcel Apfelbaum
  0 siblings, 0 replies; 11+ messages in thread
From: Marcel Apfelbaum @ 2018-03-22  7:48 UTC (permalink / raw)
  To: yuval shaia, qemu-devel; +Cc: famz, eblake, qemu-trivial


Hi Yuval,

----- Original Message -----
> From: no-reply@patchew.org
> To: "yuval shaia" <yuval.shaia@oracle.com>
> Cc: famz@redhat.com, "yuval shaia" <yuval.shaia@oracle.com>, marcel@redhat.com, eblake@redhat.com,
> qemu-devel@nongnu.org, qemu-trivial@nongnu.org
> Sent: Thursday, March 22, 2018 7:07:35 AM
> Subject: Re: [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation
> 
> Hi,
> 
> This series seems to have some coding style problems. See output below for
> more information:
> 

[...]

> === OUTPUT BEGIN ===
> Checking PATCH 1/3: hw/rdma: Change host_virt to void *...
> Checking PATCH 2/3: hw/rdma: Use correct print format in CHK_ATTR macro...
> Checking PATCH 3/3: hw/rdma: Fix 32-bit compilation...
> WARNING: line over 80 characters
> #40: FILE: hw/rdma/rdma_backend.c:180:
> +            pr_dbg("ibv_create_ah failed for gid <0x%" PRIx64 ", 0x%" PRIx64
> ">\n",
> 
> ERROR: space prohibited before that close parenthesis ')'
> #78: FILE: hw/rdma/rdma_backend.c:673:
> +    CHK_ATTR(dev_attr, backend_dev->dev_attr, max_mr_size, "%" PRId64 );
> 
> WARNING: line over 80 characters
> #244: FILE: hw/rdma/vmw/pvrdma_main.c:345:
> +        pr_err("Error trying to set REG value, addr=0x%" PRIx64 ", val=0x%"
> PRIx64 "\n",
> 
> total: 1 errors, 2 warnings, 248 lines checked
> 

Can you please fix and resend?

Thanks,
Marcel

> Your patch has style problems, please review.  If any of these errors
> are false positives report them to the maintainer, see
> CHECKPATCH in MAINTAINERS.
> 
> === OUTPUT END ===
> 
> Test command exited with code: 1
> 
> 
> ---
> Email generated automatically by Patchew [http://patchew.org/].
> Please send your feedback to patchew-devel@freelists.org

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [Qemu-trivial] [PATCH 1/3] hw/rdma: Change host_virt to void *
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 1/3] hw/rdma: Change host_virt to void * Yuval Shaia
@ 2018-03-22  8:25   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 11+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-22  8:25 UTC (permalink / raw)
  To: Yuval Shaia, marcel, eblake, qemu-devel, qemu-trivial

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;
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [PATCH 2/3] hw/rdma: Use correct print format in CHK_ATTR macro
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 2/3] hw/rdma: Use correct print format in CHK_ATTR macro Yuval Shaia
@ 2018-03-22  8:26   ` Philippe Mathieu-Daudé
  0 siblings, 0 replies; 11+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-22  8:26 UTC (permalink / raw)
  To: Yuval Shaia, marcel, eblake, qemu-devel, qemu-trivial

On 03/21/2018 06:10 PM, Yuval Shaia wrote:
> Macro should not cast the given variable to u64 instead it should use
> the supplied format argument (fmt).
> 
> 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 | 4 ++--
>  1 file changed, 2 insertions(+), 2 deletions(-)
> 
> diff --git a/hw/rdma/rdma_backend.c b/hw/rdma/rdma_backend.c
> index f1a37ba4a2..0391a7dd95 100644
> --- a/hw/rdma/rdma_backend.c
> +++ b/hw/rdma/rdma_backend.c
> @@ -656,8 +656,8 @@ void rdma_backend_destroy_qp(RdmaBackendQP *qp)
>  #define CHK_ATTR(req, dev, member, fmt) ({ \
>      pr_dbg("%s="fmt","fmt"\n", #member, dev.member, req->member); \
>      if (req->member > dev.member) { \
> -        warn_report("%s = 0x%lx is higher than host device capability 0x%lx", \
> -                    #member, (uint64_t)req->member, (uint64_t)dev.member); \
> +        warn_report("%s = "fmt" is higher than host device capability "fmt, \
> +                    #member, req->member, dev.member); \
>          req->member = dev.member; \
>      } \
>      pr_dbg("%s="fmt"\n", #member, req->member); })
> 

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [Qemu-trivial] [PATCH 3/3] hw/rdma: Fix 32-bit compilation
  2018-03-21 21:10 ` [Qemu-devel] [PATCH 3/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
@ 2018-03-22  8:31   ` Philippe Mathieu-Daudé
  2018-03-22  9:43     ` Yuval Shaia
  0 siblings, 1 reply; 11+ messages in thread
From: Philippe Mathieu-Daudé @ 2018-03-22  8:31 UTC (permalink / raw)
  To: Yuval Shaia, marcel, eblake, qemu-devel, qemu-trivial

Hi Yuval,

On 03/21/2018 06:10 PM, Yuval Shaia wrote:
> Use the correct printf formats, so that a 32-bit compile doesn't spit
> out lots of warnings about %lx being incompatible with uint64_t.
> 
> Suggested-by: Eric Blake <eblake@redhat.com>
> Signed-off-by: Yuval Shaia <yuval.shaia@oracle.com>
> ---
>  hw/rdma/rdma_backend.c        | 21 +++++++++++----------
>  hw/rdma/rdma_rm.c             |  4 ++--
>  hw/rdma/rdma_utils.c          |  6 +++---
>  hw/rdma/vmw/pvrdma_cmd.c      |  8 ++++----
>  hw/rdma/vmw/pvrdma_dev_ring.c |  6 +++---
>  hw/rdma/vmw/pvrdma_dev_ring.h |  2 +-
>  hw/rdma/vmw/pvrdma_main.c     | 25 +++++++++++++------------
>  hw/rdma/vmw/pvrdma_qp_ops.c   |  6 +++---
>  8 files changed, 40 insertions(+), 38 deletions(-)
> 
> diff --git a/hw/rdma/rdma_backend.c b/hw/rdma/rdma_backend.c
> index 0391a7dd95..9e427306b3 100644
> --- a/hw/rdma/rdma_backend.c
> +++ b/hw/rdma/rdma_backend.c
> @@ -62,12 +62,13 @@ static void poll_cq(RdmaDeviceResources *rdma_dev_res, struct ibv_cq *ibcq)
>          pr_dbg("Got %d completion(s) from cq %p\n", ne, ibcq);
>  
>          for (i = 0; i < ne; i++) {
> -            pr_dbg("wr_id=0x%lx\n", wc[i].wr_id);
> +            pr_dbg("wr_id=0x%" PRIx64 "\n", wc[i].wr_id);
>              pr_dbg("status=%d\n", wc[i].status);
>  
>              bctx = rdma_rm_get_cqe_ctx(rdma_dev_res, wc[i].wr_id);
>              if (unlikely(!bctx)) {
> -                pr_dbg("Error: Failed to find ctx for req %ld\n", wc[i].wr_id);
> +                pr_dbg("Error: Failed to find ctx for req %" PRId64 "\n",
> +                       wc[i].wr_id);
>                  continue;
>              }
>              pr_dbg("Processing %s CQE\n", bctx->is_tx_req ? "send" : "recv");
> @@ -176,7 +177,7 @@ static struct ibv_ah *create_ah(RdmaBackendDev *backend_dev, struct ibv_pd *pd,
>              g_hash_table_insert(ah_hash, ah_key, ah);
>          } else {
>              g_bytes_unref(ah_key);
> -            pr_dbg("ibv_create_ah failed for gid <%lx %lx>\n",
> +            pr_dbg("ibv_create_ah failed for gid <0x%" PRIx64 ", 0x%" PRIx64 ">\n",
>                      be64_to_cpu(dgid->global.subnet_prefix),
>                      be64_to_cpu(dgid->global.interface_id));
>          }
> @@ -227,8 +228,8 @@ static int build_host_sge_array(RdmaDeviceResources *rdma_dev_res,
>          dsge->length = ssge[ssge_idx].length;
>          dsge->lkey = rdma_backend_mr_lkey(&mr->backend_mr);
>  
> -        pr_dbg("ssge->addr=0x%lx\n", (uint64_t)ssge[ssge_idx].addr);
> -        pr_dbg("dsge->addr=0x%lx\n", dsge->addr);
> +        pr_dbg("ssge->addr=0x%" PRIx64 "\n", ssge[ssge_idx].addr);
> +        pr_dbg("dsge->addr=0x%" PRIx64 "\n", dsge->addr);
>          pr_dbg("dsge->length=%d\n", dsge->length);
>          pr_dbg("dsge->lkey=0x%x\n", dsge->lkey);
>  
> @@ -405,7 +406,7 @@ int rdma_backend_create_mr(RdmaBackendMR *mr, RdmaBackendPD *pd, void *addr,
>                             size_t length, int access)
>  {
>      pr_dbg("addr=0x%p\n", addr);
> -    pr_dbg("len=%ld\n", length);
> +    pr_dbg("len=%zd\n", length);

%zd is for ssize_t, size_t format is %zu.

>      mr->ibmr = ibv_reg_mr(pd->ibpd, addr, length, access);
>      if (mr->ibmr) {
>          pr_dbg("lkey=0x%x\n", mr->ibmr->lkey);
> @@ -562,7 +563,7 @@ int rdma_backend_qp_state_rtr(RdmaBackendDev *backend_dev, RdmaBackendQP *qp,
>  
>      switch (qp_type) {
>      case IBV_QPT_RC:
> -        pr_dbg("dgid=0x%lx,%lx\n",
> +        pr_dbg("dgid=0x%" PRIx64 ",%" PRIx64 "\n",
>                 be64_to_cpu(ibv_gid.global.subnet_prefix),
>                 be64_to_cpu(ibv_gid.global.interface_id));
>          pr_dbg("dqpn=0x%x\n", dqpn);
> @@ -669,7 +670,7 @@ static int init_device_caps(RdmaBackendDev *backend_dev,
>          return -EIO;
>      }
>  
> -    CHK_ATTR(dev_attr, backend_dev->dev_attr, max_mr_size, "%ld");
> +    CHK_ATTR(dev_attr, backend_dev->dev_attr, max_mr_size, "%" PRId64 );
>      CHK_ATTR(dev_attr, backend_dev->dev_attr, max_qp, "%d");
>      CHK_ATTR(dev_attr, backend_dev->dev_attr, max_sge, "%d");
>      CHK_ATTR(dev_attr, backend_dev->dev_attr, max_qp_wr, "%d");
> @@ -782,9 +783,9 @@ int rdma_backend_init(RdmaBackendDev *backend_dev,
>          ret = -EIO;
>          goto out_destroy_comm_channel;
>      }
> -    pr_dbg("subnet_prefix=0x%lx\n",
> +    pr_dbg("subnet_prefix=0x%" PRIx64 "\n",
>             be64_to_cpu(backend_dev->gid.global.subnet_prefix));
> -    pr_dbg("interface_id=0x%lx\n",
> +    pr_dbg("interface_id=0x%" PRIx64 "\n",
>             be64_to_cpu(backend_dev->gid.global.interface_id));
>  
>      snprintf(thread_name, sizeof(thread_name), "rdma_comp_%s",
> diff --git a/hw/rdma/rdma_rm.c b/hw/rdma/rdma_rm.c
> index 296e40518e..8da510c0d2 100644
> --- a/hw/rdma/rdma_rm.c
> +++ b/hw/rdma/rdma_rm.c
> @@ -170,9 +170,9 @@ int rdma_rm_alloc_mr(RdmaDeviceResources *dev_res, uint32_t pd_handle,
>          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);
> +        pr_dbg("length=%zd\n", guest_length);

%zu

>          mr->user_mr.guest_start = guest_start;
> -        pr_dbg("guest_start=0x%lx\n", mr->user_mr.guest_start);
> +        pr_dbg("guest_start=0x%" PRIx64 "\n", mr->user_mr.guest_start);
>  
>          length = mr->user_mr.length;
>          addr = mr->user_mr.host_virt;
> diff --git a/hw/rdma/rdma_utils.c b/hw/rdma/rdma_utils.c
> index 0e5caffd40..d713f635f1 100644
> --- a/hw/rdma/rdma_utils.c
> +++ b/hw/rdma/rdma_utils.c
> @@ -27,8 +27,8 @@ void *rdma_pci_dma_map(PCIDevice *dev, dma_addr_t addr, dma_addr_t plen)
>  
>      p = pci_dma_map(dev, addr, &len, DMA_DIRECTION_TO_DEVICE);
>      if (!p) {
> -        pr_dbg("Fail in pci_dma_map, addr=0x%llx, len=%ld\n",
> -               (long long unsigned int)addr, len);
> +        pr_dbg("Fail in pci_dma_map, addr=0x%" PRIx64 ", len=%" PRId64 "\n",
> +               addr, len);
>          return NULL;
>      }
>  
> @@ -37,7 +37,7 @@ void *rdma_pci_dma_map(PCIDevice *dev, dma_addr_t addr, dma_addr_t plen)
>          return NULL;
>      }
>  
> -    pr_dbg("0x%llx -> %p (len=%ld)\n", (long long unsigned int)addr, p, len);
> +    pr_dbg("0x%" PRIx64 " -> %p (len=% " PRId64 ")\n", addr, p, len);
>  
>      return p;
>  }
> diff --git a/hw/rdma/vmw/pvrdma_cmd.c b/hw/rdma/vmw/pvrdma_cmd.c
> index 293dfed29f..dbdd002cc2 100644
> --- a/hw/rdma/vmw/pvrdma_cmd.c
> +++ b/hw/rdma/vmw/pvrdma_cmd.c
> @@ -85,7 +85,7 @@ static void *pvrdma_map_to_pdir(PCIDevice *pdev, uint64_t pdir_dma,
>              }
>          }
>  
> -        pr_dbg("guest_dma[%d]=0x%lx\n", addr_idx, tbl[tbl_idx]);
> +        pr_dbg("guest_dma[%d]=0x%" PRIx64 "\n", addr_idx, tbl[tbl_idx]);
>  
>          curr_page = rdma_pci_dma_map(pdev, (dma_addr_t)tbl[tbl_idx],
>                                       TARGET_PAGE_SIZE);
> @@ -285,7 +285,7 @@ static int create_cq_ring(PCIDevice *pci_dev , PvrdmaRing **ring,
>          goto out_free_ring;
>      }
>  
> -    sprintf(ring_name, "cq_ring_%lx", pdir_dma);
> +    sprintf(ring_name, "cq_ring_%" PRIx64, pdir_dma);
>      rc = pvrdma_ring_init(r, ring_name, pci_dev, &r->ring_state[1],
>                            cqe, sizeof(struct pvrdma_cqe),
>                            /* first page is ring state */
> @@ -415,7 +415,7 @@ static int create_qp_rings(PCIDevice *pci_dev, uint64_t pdir_dma,
>      wqe_sz = pow2ceil(sizeof(struct pvrdma_sq_wqe_hdr) +
>                        sizeof(struct pvrdma_sge) * smax_sge - 1);
>  
> -    sprintf(ring_name, "qp_sring_%lx", pdir_dma);
> +    sprintf(ring_name, "qp_sring_%" PRIx64, pdir_dma);
>      rc = pvrdma_ring_init(sr, ring_name, pci_dev, sr->ring_state,
>                            scqe, wqe_sz, (dma_addr_t *)&tbl[1], spages);
>      if (rc) {
> @@ -426,7 +426,7 @@ static int create_qp_rings(PCIDevice *pci_dev, uint64_t pdir_dma,
>      rr->ring_state = &sr->ring_state[1];
>      wqe_sz = pow2ceil(sizeof(struct pvrdma_rq_wqe_hdr) +
>                        sizeof(struct pvrdma_sge) * rmax_sge - 1);
> -    sprintf(ring_name, "qp_rring_%lx", pdir_dma);
> +    sprintf(ring_name, "qp_rring_%" PRIx64, pdir_dma);
>      rc = pvrdma_ring_init(rr, ring_name, pci_dev, rr->ring_state,
>                            rcqe, wqe_sz, (dma_addr_t *)&tbl[1 + spages], rpages);
>      if (rc) {
> diff --git a/hw/rdma/vmw/pvrdma_dev_ring.c b/hw/rdma/vmw/pvrdma_dev_ring.c
> index ec309dad55..be3d651139 100644
> --- a/hw/rdma/vmw/pvrdma_dev_ring.c
> +++ b/hw/rdma/vmw/pvrdma_dev_ring.c
> @@ -23,7 +23,7 @@
>  
>  int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
>                       struct pvrdma_ring *ring_state, uint32_t max_elems,
> -                     size_t elem_sz, dma_addr_t *tbl, dma_addr_t npages)
> +                     size_t elem_sz, dma_addr_t *tbl, uint32_t npages)
>  {
>      int i;
>      int rc = 0;
> @@ -35,8 +35,8 @@ int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
>      ring->ring_state = ring_state;
>      ring->max_elems = max_elems;
>      ring->elem_sz = elem_sz;
> -    pr_dbg("ring->elem_sz=%ld\n", ring->elem_sz);
> -    pr_dbg("npages=%ld\n", npages);
> +    pr_dbg("ring->elem_sz=%zd\n", ring->elem_sz);

%zu

> +    pr_dbg("npages=%d\n", npages);
>      /* TODO: Give a moment to think if we want to redo driver settings
>      atomic_set(&ring->ring_state->prod_tail, 0);
>      atomic_set(&ring->ring_state->cons_head, 0);
> diff --git a/hw/rdma/vmw/pvrdma_dev_ring.h b/hw/rdma/vmw/pvrdma_dev_ring.h
> index 02a590b86d..4a6752f08a 100644
> --- a/hw/rdma/vmw/pvrdma_dev_ring.h
> +++ b/hw/rdma/vmw/pvrdma_dev_ring.h
> @@ -32,7 +32,7 @@ typedef struct PvrdmaRing {
>  
>  int pvrdma_ring_init(PvrdmaRing *ring, const char *name, PCIDevice *dev,
>                       struct pvrdma_ring *ring_state, uint32_t max_elems,
> -                     size_t elem_sz, dma_addr_t *tbl, dma_addr_t npages);
> +                     size_t elem_sz, dma_addr_t *tbl, uint32_t npages);
>  void *pvrdma_ring_next_elem_read(PvrdmaRing *ring);
>  void pvrdma_ring_read_inc(PvrdmaRing *ring);
>  void *pvrdma_ring_next_elem_write(PvrdmaRing *ring);
> diff --git a/hw/rdma/vmw/pvrdma_main.c b/hw/rdma/vmw/pvrdma_main.c
> index 99787812ba..ee6981a6a8 100644
> --- a/hw/rdma/vmw/pvrdma_main.c
> +++ b/hw/rdma/vmw/pvrdma_main.c
> @@ -236,7 +236,7 @@ static void init_dsr_dev_caps(PVRDMADev *dev)
>      dsr = dev->dsr_info.dsr;
>  
>      dsr->caps.fw_ver = PVRDMA_FW_VERSION;
> -    pr_dbg("fw_ver=0x%lx\n", dsr->caps.fw_ver);
> +    pr_dbg("fw_ver=0x%" PRIx64 "\n", dsr->caps.fw_ver);
>  
>      dsr->caps.mode = PVRDMA_DEVICE_MODE_ROCE;
>      pr_dbg("mode=%d\n", dsr->caps.mode);
> @@ -261,11 +261,10 @@ static void init_dsr_dev_caps(PVRDMADev *dev)
>      pr_dbg("gid_tbl_len=%d\n", dsr->caps.gid_tbl_len);
>  
>      dsr->caps.sys_image_guid = 0;
> -    pr_dbg("sys_image_guid=%lx\n", dsr->caps.sys_image_guid);
> +    pr_dbg("sys_image_guid=%" PRIx64 "\n", dsr->caps.sys_image_guid);
>  
>      dsr->caps.node_guid = cpu_to_be64(dev->node_guid);
> -    pr_dbg("node_guid=%llx\n",
> -           (long long unsigned int)be64_to_cpu(dsr->caps.node_guid));
> +    pr_dbg("node_guid=%" PRIx64 "\n", be64_to_cpu(dsr->caps.node_guid));
>  
>      dsr->caps.phys_port_cnt = MAX_PORTS;
>      pr_dbg("phys_port_cnt=%d\n", dsr->caps.phys_port_cnt);
> @@ -343,8 +342,8 @@ static void regs_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
>      /* pr_dbg("addr=0x%lx, val=0x%x, size=%d\n", addr, (uint32_t)val, size); */
>  
>      if (set_reg_val(dev, addr, val)) {
> -        pr_err("Error trying to set REG value, addr=0x%lx, val=0x%lx\n",
> -               (uint64_t)addr, val);
> +        pr_err("Error trying to set REG value, addr=0x%" PRIx64 ", val=0x%" PRIx64 "\n",
> +               addr, val);
>          return;
>      }
>  
> @@ -373,7 +372,7 @@ static void regs_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
>          }
>      break;
>      case PVRDMA_REG_IMR:
> -        pr_dbg("Interrupt mask=0x%lx\n", val);
> +        pr_dbg("Interrupt mask=0x%" PRIx64 "\n", val);
>          dev->interrupt_mask = val;
>          break;
>      case PVRDMA_REG_REQUEST:
> @@ -404,7 +403,8 @@ static void uar_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
>  
>      switch (addr & 0xFFF) { /* Mask with 0xFFF as each UC gets page */
>      case PVRDMA_UAR_QP_OFFSET:
> -        pr_dbg("UAR QP command, addr=0x%x, val=0x%lx\n", (uint32_t)addr, val);
> +        pr_dbg("UAR QP command, addr=0x%" PRIx64 ", val=0x%" PRIx64 "\n",
> +               (uint64_t)addr, val);
>          if (val & PVRDMA_UAR_QP_SEND) {
>              pvrdma_qp_send(dev, val & PVRDMA_UAR_HANDLE_MASK);
>          }
> @@ -420,16 +420,17 @@ static void uar_write(void *opaque, hwaddr addr, uint64_t val, unsigned size)
>                                    !!(val & PVRDMA_UAR_CQ_ARM_SOL));
>          }
>          if (val & PVRDMA_UAR_CQ_ARM_SOL) {
> -            pr_dbg("UAR_CQ_ARM_SOL (%ld)\n", val & PVRDMA_UAR_HANDLE_MASK);
> +            pr_dbg("UAR_CQ_ARM_SOL (%" PRIx64 ")\n",
> +                   val & PVRDMA_UAR_HANDLE_MASK);
>          }
>          if (val & PVRDMA_UAR_CQ_POLL) {
> -            pr_dbg("UAR_CQ_POLL (%ld)\n", val & PVRDMA_UAR_HANDLE_MASK);
> +            pr_dbg("UAR_CQ_POLL (%" PRIx64 ")\n", val & PVRDMA_UAR_HANDLE_MASK);
>              pvrdma_cq_poll(&dev->rdma_dev_res, val & PVRDMA_UAR_HANDLE_MASK);
>          }
>          break;
>      default:
> -        pr_err("Unsupported command, addr=0x%lx, val=0x%lx\n",
> -               (uint64_t)addr, val);
> +        pr_err("Unsupported command, addr=0x%" PRIx64 ", val=0x%" PRIx64 "\n",
> +               addr, val);
>          break;
>      }
>  }
> diff --git a/hw/rdma/vmw/pvrdma_qp_ops.c b/hw/rdma/vmw/pvrdma_qp_ops.c
> index f0a1f9eb02..ccada31b54 100644
> --- a/hw/rdma/vmw/pvrdma_qp_ops.c
> +++ b/hw/rdma/vmw/pvrdma_qp_ops.c
> @@ -102,7 +102,7 @@ static void pvrdma_qp_ops_comp_handler(int status, unsigned int vendor_err,
>      CompHandlerCtx *comp_ctx = (CompHandlerCtx *)ctx;
>  
>      pr_dbg("cq_handle=%d\n", comp_ctx->cq_handle);
> -    pr_dbg("wr_id=%ld\n", comp_ctx->cqe.wr_id);
> +    pr_dbg("wr_id=%" PRIx64 "\n", comp_ctx->cqe.wr_id);
>      pr_dbg("status=%d\n", status);
>      pr_dbg("vendor_err=0x%x\n", vendor_err);
>      comp_ctx->cqe.status = status;
> @@ -143,7 +143,7 @@ int pvrdma_qp_send(PVRDMADev *dev, uint32_t qp_handle)
>      while (wqe) {
>          CompHandlerCtx *comp_ctx;
>  
> -        pr_dbg("wr_id=%ld\n", wqe->hdr.wr_id);
> +        pr_dbg("wr_id=%" PRIx64 "\n", wqe->hdr.wr_id);
>  
>          /* Prepare CQE */
>          comp_ctx = g_malloc(sizeof(CompHandlerCtx));
> @@ -187,7 +187,7 @@ int pvrdma_qp_recv(PVRDMADev *dev, uint32_t qp_handle)
>      while (wqe) {
>          CompHandlerCtx *comp_ctx;
>  
> -        pr_dbg("wr_id=%ld\n", wqe->hdr.wr_id);
> +        pr_dbg("wr_id=%" PRIx64 "\n", wqe->hdr.wr_id);
>  
>          /* Prepare CQE */
>          comp_ctx = g_malloc(sizeof(CompHandlerCtx));
> 

So many pr_err/pr_dbg() changes, you could have take the opportunity to
replace with updated error reporting API and tracepoint.

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

^ permalink raw reply	[flat|nested] 11+ messages in thread

* Re: [Qemu-devel] [Qemu-trivial] [PATCH 3/3] hw/rdma: Fix 32-bit compilation
  2018-03-22  8:31   ` [Qemu-devel] [Qemu-trivial] " Philippe Mathieu-Daudé
@ 2018-03-22  9:43     ` Yuval Shaia
  0 siblings, 0 replies; 11+ messages in thread
From: Yuval Shaia @ 2018-03-22  9:43 UTC (permalink / raw)
  To: Philippe Mathieu-Daudé
  Cc: marcel, eblake, qemu-devel, qemu-trivial, yuval.shaia

> > 
> 
> So many pr_err/pr_dbg() changes, you could have take the opportunity to
> replace with updated error reporting API and tracepoint.

Let's leave something for next time :)

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

Thanks.

^ permalink raw reply	[flat|nested] 11+ messages in thread

end of thread, other threads:[~2018-03-22  9:43 UTC | newest]

Thread overview: 11+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-03-21 21:10 [Qemu-devel] [PATCH 0/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
2018-03-21 21:10 ` [Qemu-devel] [PATCH 1/3] hw/rdma: Change host_virt to void * Yuval Shaia
2018-03-22  8:25   ` [Qemu-devel] [Qemu-trivial] " Philippe Mathieu-Daudé
2018-03-21 21:10 ` [Qemu-devel] [PATCH 2/3] hw/rdma: Use correct print format in CHK_ATTR macro Yuval Shaia
2018-03-22  8:26   ` Philippe Mathieu-Daudé
2018-03-21 21:10 ` [Qemu-devel] [PATCH 3/3] hw/rdma: Fix 32-bit compilation Yuval Shaia
2018-03-22  8:31   ` [Qemu-devel] [Qemu-trivial] " Philippe Mathieu-Daudé
2018-03-22  9:43     ` Yuval Shaia
2018-03-21 22:24 ` [Qemu-devel] [PATCH 0/3] " Eric Blake
2018-03-22  5:07 ` no-reply
2018-03-22  7:48   ` Marcel Apfelbaum

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.