[openib-general] HP ZX1 and HP IB cards...

Grant Grundler iod00d at hp.com
Fri Dec 3 14:14:13 PST 2004


On Fri, Dec 03, 2004 at 10:59:12AM -0800, Roland Dreier wrote:
>     Grant> How can I tell which bits I'm currently testing?  I did the
>     Grant> "svn up" about 2h ago.
> 
> That's new enough.  Here's a debugging patch that might help me figure
> out what's going on; can you reproduce the problem with this applied?

I tried but it worked with the patch. :^(

Last output was:
...
Set EQ CI 3/55
cmd completion 1208
Set EQ CI 3/56
cmd completion 1209
Set EQ CI 3/57
cmd completion 1210
Set EQ CI 3/58
cmd completion 1211
Set EQ CI 3/59
--- end of output ---

iowa:/usr/src/linux-ia64-release-2.6.10# cat /sys/class/infiniband/mthca0/ports/1/state
cmd completion 1212
Set EQ CI 3/60
4: ACTIVE
iowa:/usr/src/linux-ia64-release-2.6.10# cat /sys/class/infiniband/mthca0/ports/2/state
cmd completion 1213
Set EQ CI 3/61
1: DOWN

which is correct. Port "A" is connected to a switch and "B" is not.


> +	printk(KERN_ERR "Set EQ CI %d/%d\n", eqn, ci);
> +
>  	doorbell[0] = cpu_to_be32(MTHCA_EQ_DB_SET_CI | eqn);
>  	doorbell[1] = cpu_to_be32(ci);

This doesn't feel very safe to me.
If write ordering is required here, writel() or wmb() is necessary.
Let me look over this code and see if the ordering is enforced elsewhere.
I'll also play around with removing one printk at a time.

thanks,
grant



More information about the general mailing list