[openib-general] Re: Continue to experience problems in installing Gen2 on IA-32

Roland Dreier rolandd at cisco.com
Fri Aug 12 08:54:05 PDT 2005


    Roland> Do you have any theory as to why the drivers worked in
    Roland> 64-bit mode and failed in 32-bit mode?  I don't see any
    Roland> reason why the parameters passed to INIT_IB would be any
    Roland> different.

    Grant> grundler at gsyprf3:/usr/src/openib_gen2/src/linux-kernel/infiniband/hw/mthca$ fgrep writeq *
    Grant> ...
    Grant> mthca_doorbell.h:       __raw_writeq((__force u64) val, dest);
    Grant> mthca_doorbell.h:       __raw_writeq(*(u64 *) val, dest);

It's a good theory, except for two problems:
 - that code is only used for data-path doorbell ringing, so it won't
   be used until long after the INIT_IB command.
 - It's inside an "#if BITS_PER_LONG" block, so it doesn't ever get
   used on 32-bit platforms anyway.

    Grant> The only theory I can think of is 64-bit MMIO writes on a
    Grant> 32-bit OS will come out as two seperate writes. But since
    Grant> others are using this without a problem, this isn't likely
    Grant> a generic issue. Maybe there is some timing issue here...ie
    Grant> slower/faster CPU or chipset is exposing a problem.

Well, earlier in the thread it was said that the same system worked
fine with a 64-bit kernel and failed with a 32-bit kernel.  So it's
probably not a chipset issue.

And the INIT_IB command isn't using MMIO writes to transfer the
command block to the HCA -- the HCA DMAs it out of memory itself.

 - R.



More information about the general mailing list