[openib-general] ip over ib throughtput

Roland Dreier roland at topspin.com
Tue Jan 11 13:41:00 PST 2005


    Grant> I expect SA_SHIRQ is harmless since the tg3 interrupt
    Grant> handler can't assume the MSI will be assigned and
    Grant> working. I don't want to add run time checks to tg3 for
    Grant> this (assuming it's obvious where to add them).  It might
    Grant> be better to document this in Documentation/MSI-HOWTO.txt.

I think a full MSI update for tg3 would need a separate MSI interrupt
routine that takes advantage of all the additional non-shared and
ordering guarantees that MSI provides.  This is what I did in mthca --
normally, we pass mthca_interrupt() to request_irq, but in MSI-X mode,
we pass mthca_msi_x_interrupt(), which doesn't do any mmio reads.

    Grant> BTW, I expect better perf if the platform code specifies
    Grant> IRQ_PER_CPU in the IRQ descriptor.  AFAICT, only ia64 and
    Grant> ppc64 do that. (parisc-linux just switched over to generic
    Grant> IRQ support...it will too).  Folks who care about AMD64
    Grant> performance should look into that as well - maybe it's not
    Grant> possible to direct interrupts to a specific CPU.

That's an interesting idea.  It is possible to assign interrupts to a
particular CPU on i386/x86_64 -- one can do it from userspace by
writing a mask with only one 1 in it into /proc/irq/N/smp_affinity.
In fact even if the mask allows more than one CPU, in a lot of systems
the interrupt will always go to the same CPU unless someone changes
the binding (either by the kernel kirqd or userspace IRQ balancer).

However I guess there may be a race condition when an IRQ is being
moved from one CPU to another.  How do ia64/ppc64 handle this?

 - R.




More information about the general mailing list