Proposal: Changing enable_irq/disable_irq to be two argument.

From: Alan Cox
Date: Thu Sep 02 2004 - 08:41:35 EST


I've been putting together some patches to deal with stuck interrupts
more intelligently. Instead of just deciding an interrupt is stuck the
code tries to respond to stuck interrupts by running every shared IRQ
handler registered. This is generally safe because SHIRQ handlers have
to check if their hardware caused the interrupt anyway. It breaks for
the corner case of disable_irq() on a shared interrupt.

Fixing this needs enable/disable_irq() to take the cookie we passed to
request/free_irq. At that point we can both disable the irq and skip the
handler when doing recovery.

Even without this change the hack test version of the change is working
very well on test hardware that previously never ran Linux properly
because of broken IRQ routing tables. Clearly it needs to be a user
enabled option because it harms performance, we need to trap any bugs we
cause in this area and to continue to provide appropriate pain to
offending hardware vendors.

Alan

-
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/