Steve,

You should have the same fix for the server side as well
Here is the patch

-vu




A bad cast causes the iova_start, which in this case is a DMA bus address,
to be truncated on 32b systems.  No cast is needed.

Signed-off-by: Steve Wise <[email protected]>
---

net/sunrpc/xprtrdma/verbs.c |    2 +-
1 files changed, 1 insertions(+), 1 deletions(-)

diff --git a/net/sunrpc/xprtrdma/verbs.c b/net/sunrpc/xprtrdma/verbs.c
index 3b21e0c..3a374f5 100644
--- a/net/sunrpc/xprtrdma/verbs.c
+++ b/net/sunrpc/xprtrdma/verbs.c
@@ -1489,7 +1489,7 @@ rpcrdma_register_frmr_external(struct rpcrdma_mr_seg *seg,
    memset(&frmr_wr, 0, sizeof frmr_wr);
    frmr_wr.opcode = IB_WR_FAST_REG_MR;
    frmr_wr.send_flags = 0;            /* unsignaled */
-    frmr_wr.wr.fast_reg.iova_start = (unsigned long)seg1->mr_dma;
+    frmr_wr.wr.fast_reg.iova_start = seg1->mr_dma;
    frmr_wr.wr.fast_reg.page_list = seg1->mr_chunk.rl_mw->r.frmr.fr_pgl;
    frmr_wr.wr.fast_reg.page_list_len = i;
    frmr_wr.wr.fast_reg.page_shift = PAGE_SHIFT;



_______________________________________________
ewg mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

--- a/net/sunrpc/xprtrdma/svc_rdma_transport.c  2009-03-03 17:05:22.000000000 
-0800
+++ b/net/sunrpc/xprtrdma/svc_rdma_transport.c  2009-04-24 13:38:36.000000000 
-0700
@@ -1228,7 +1244,7 @@
        memset(&fastreg_wr, 0, sizeof fastreg_wr);
        fastreg_wr.opcode = IB_WR_FAST_REG_MR;
        fastreg_wr.send_flags = IB_SEND_SIGNALED;
-       fastreg_wr.wr.fast_reg.iova_start = (unsigned long)frmr->kva;
+       fastreg_wr.wr.fast_reg.iova_start = frmr->kva;
        fastreg_wr.wr.fast_reg.page_list = frmr->page_list;
        fastreg_wr.wr.fast_reg.page_list_len = frmr->page_list_len;
        fastreg_wr.wr.fast_reg.page_shift = PAGE_SHIFT;
_______________________________________________
ewg mailing list
[email protected]
http://lists.openfabrics.org/cgi-bin/mailman/listinfo/ewg

Reply via email to