Re: [PATCH] Prevent nested interrupts when the IRQ stack is near overflowing v2

From: Andi Kleen
Date: Wed Mar 24 2010 - 20:37:00 EST


On Thu, Mar 25, 2010 at 12:08:23AM +0100, Thomas Gleixner wrote:
> On Wed, 24 Mar 2010, Thomas Gleixner wrote:
>
> > On Wed, 24 Mar 2010, Andi Kleen wrote:
> >
> > > Prevent nested interrupts when the IRQ stack is near overflowing v2
> > >
> > > Interrupts can always nest when they don't run with IRQF_DISABLED.
> > >
> > > When a lot of interrupts hit the same vector on the same
> > > CPU nested interrupts can overflow the irq stack and cause hangs.
> That's utter nonsense. An interrupt storm on the same vector does not
> cause irq nesting. The irq code prevents reentering a handler and in

Sorry it's the same CPU, not the same vector. Yes the reference
to same vector was misleading.

"
Multiple vectors on a multi port NIC pointing to the same CPU,
all hitting the irq stack until it overflows.
"

> case of MSI-X it just disables the IRQ when it comes again while the
> first irq on that vector is still in progress. So the maximum nesting
> is two up to handle_edge_irq() where it disables the IRQ and returns
> right away.

Real maximum nesting is all IRQs running with interrupts on pointing
to the same CPU. Enough from multiple busy IRQ sources and you go boom.

-Andi

--
ak@xxxxxxxxxxxxxxx -- Speaking for myself only.
--
To unsubscribe from this list: send the line "unsubscribe linux-kernel" in
the body of a message to majordomo@xxxxxxxxxxxxxxx
More majordomo info at http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.tux.org/lkml/