Messages in this thread | | | Date | Tue, 14 Jun 2011 13:17:10 +0200 | Subject | Re: chained irq handler problems | From | Manuel Lauss <> |
| |
On Tue, Jun 14, 2011 at 12:05 PM, Thomas Gleixner <tglx@linutronix.de> wrote: > On Sun, 12 Jun 2011, Manuel Lauss wrote: >> My question is: what are the differences in interrupt handling between the >> "traditional" handler and the cascade handler case? >> I also noticed that the cascade irq (the muxer irq line to the cpu) is not >> disabled when the interrupt is serviced. Is this by design? > > The normal handler, which should btw never ever be setup from an > startup callback, deals with the irq chip functions (mask, ack, eoi) > which are assigned to that irq line. The chained handler is called > directly from the low level entry code and bypasses the standard > handling mechanism. That means no chip functions are called. If your > irq chip of the primary line requires e.g. an ack, then this needs to > be done explicitely in the chained handler itself.
I added calls to disable/enable the cascade around the call to generic_handle_irq() and now it works (no ack necessary since the cascade is set up as level-triggered).
Thanks! Manuel Lauss
| |