[ofa-general] ipath irq bug

Roland Dreier rdreier at cisco.com
Fri Apr 20 14:27:53 PDT 2007


 > [ 2651.241648]  [<ffffffff80478444>] _spin_unlock_irq+0x28/0x2d
 > [ 2651.247482]  [<ffffffff880a0769>] :ib_ipath:ipath_rc_rcv+0xf5b/0xf8e
 > [ 2651.254058]  [<ffffffff8809d1ff>] :ib_ipath:ipath_lookup_qpn+0x4f/0x5a
 > [ 2651.260791]  [<ffffffff880a5f40>] :ib_ipath:ipath_qp_rcv+0x45/0x4e
 > [ 2651.267203]  [<ffffffff880a60b3>] :ib_ipath:ipath_ib_rcv+0x16a/0x1a8
 > [ 2651.273784]  [<ffffffff88090a3e>] :ib_ipath:ipath_kreceive+0x42f/0x6b9
 > [ 2651.286397]  [<ffffffff880a6b02>] :ib_ipath:ipath_ib_piobufavail+0x72/0x79
 > [ 2651.321572]  [<ffffffff8809932c>] :ib_ipath:ipath_intr+0x26a/0x17b6

[edited slightly]

It looks like ipath_intr() (presumably the interrupt handler) ends up
in ipath_rc_rcv() and in particular in ipath_rc_rcv_error() (which is
inlined), which calls spin_unlock_irq() from interrupt context, which
is the problem.

Someone who knows the driver better than I would have to confirm this
analysis, and decide whether the fix is just to switch to
spin_lock_irqsave() in ipath_rc_rcv_error(), or if it needs to be more
elaborate.

 - R.



More information about the general mailing list