[ofa-general] ipath irq bug
Robert Walsh
rjwalsh at pathscale.com
Fri Apr 20 17:31:03 PDT 2007
Roland Dreier wrote:
> > [ 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.
Yeah - that's it. We've just fixed it internally and will be sending a
patch out shortly.
Regards,
Robert.
More information about the general
mailing list