From mboxrd@z Thu Jan 1 00:00:00 1970 Return-Path: Subject: Re: OpenPIC / CPM2 PIC and cascading interrupt priorities From: Benjamin Herrenschmidt To: Guillaume Knispel In-Reply-To: <20090215055040.41672e36@xilun.lan.proformatique.com> References: <20090215055040.41672e36@xilun.lan.proformatique.com> Content-Type: text/plain Date: Mon, 16 Feb 2009 08:04:20 +1100 Message-Id: <1234731860.26036.95.camel@pasglop> Mime-Version: 1.0 Cc: Linuxppc-dev@ozlabs.org List-Id: Linux on PowerPC Developers Mail List List-Unsubscribe: , List-Archive: List-Post: List-Help: List-Subscribe: , > static void cpm2_cascade(unsigned int irq, struct irq_desc *desc) > { > int cascade_irq; > > while ((cascade_irq = cpm2_get_irq()) >= 0) > generic_handle_irq(cascade_irq); > > desc->chip->eoi(irq); > } You can try doing an early EOI see that helps. Ie, stick it inside the loop, after cpm_2_get_irq() and before generic_handle_irq() and see if that helps, but make sure you do that EOI only once, ie, only on the first iteration. Depending on how the CPM2 works, you may also be able to just get rid of the loop... ie, if CPM2 output is level sensitive. Ben.