Roland Dreier wrote:

   ardavis> Redhat EL 4.0, 64-bit

OK, I found a system with that distro installed, although I can't test
the results of the build.  However, I built libmthca with the same
CFLAGS that rpm seems to use, namely "-g -O2 -m64 -pipe".  I found
that mthca_tavor_arm_cq() compiles to the following tiny fragment:

0000000000001d10 <mthca_tavor_arm_cq>:
   1d10:       48 8b 07                mov    (%rdi),%rax
   1d13:       48 8b 90 a8 ef ff ff    mov    0xffffffffffffefa8(%rax),%rdx
   1d1a:       48 8b 44 24 f8          mov    0xfffffffffffffff8(%rsp),%rax
   1d1f:       48 89 42 20             mov    %rax,0x20(%rdx)
   1d23:       31 c0                   xor    %eax,%eax
   1d25:       c3                      retq

in other words, the compiler seems to be discarding all the
assignments to doorbell[0] and doorbell[1].  I'm not sure if this is a
compiler bug or what -- I need to investigate further.  In any case
can you try the following patch to libmthca and see if it fixes
things:

Index: src/cq.c
===================================================================
--- src/cq.c    (revision 2156)
+++ src/cq.c    (working copy)
@@ -441,6 +441,8 @@ int mthca_tavor_arm_cq(struct ibv_cq *cq
                            to_mcq(cq)->cqn);
        doorbell[1] = 0xffffffff;

+       mb();
+
        mthca_write64(doorbell, to_mctx(cq->context), MTHCA_CQ_DOORBELL);

        return 0;



Yes, this fixes my problem. Thanks!
_______________________________________________
openib-general mailing list
[email protected]
http://openib.org/mailman/listinfo/openib-general

To unsubscribe, please visit http://openib.org/mailman/listinfo/openib-general

Reply via email to