Messages in this thread | | | Date | Fri, 9 Feb 2007 07:36:40 +0000 | From | Russell King <> | Subject | Re: genirq: Add a set_irq_handler_locked() function |
| |
On Fri, Feb 09, 2007 at 02:48:42PM +1100, David Gibson wrote: > At present set_irq_handler() and all the existing variants take the > desc->lock for the irq in question before adjusting the irq's flow > handler. This can cause problems for irq chips for which a given > interrupt can be either level or edge depending on what's attached.
Are you sure you need to change the flow handler depending on how you program the device?
Since the outset of this design, I've had what are essentially edge based interrupt sources using the "level" handlers because they haven't had a "broken" edge implementation. By that, I mean that the masking is done in such a way that you miss edges when the source is masked.
If you do not miss edges while the source is masked, there's no point in having the complexity of the "edge" based handler in the path - it buys you nothing. Just use the "level" handler instead.
-- Russell King Linux kernel 2.6 ARM Linux - http://www.arm.linux.org.uk/ maintainer of: - To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/
| |