From mboxrd@z Thu Jan 1 00:00:00 1970 From: Jerry Van Baren Date: Fri, 03 Mar 2006 10:13:03 -0500 Subject: [U-Boot-Users] Bogus External Interrupt In-Reply-To: References: Message-ID: <44085CFF.2030200@smiths-aerospace.com> List-Id: MIME-Version: 1.0 Content-Type: text/plain; charset="us-ascii" Content-Transfer-Encoding: 7bit To: u-boot@lists.denx.de do wrote: > Hello, > > I am trying to write simple program similar to examples/timer.c, which > uses interrupts from general purpose timers. > > My board is based on mpc8260 and I am using U-boot 1.1.4. > > When interrupt is generated from timer, there also appears message: > Bogus External Interrupt IRQ 0. > > I don't know why bogus interrupt appears and how it is related to my > timer interrupt.This is also strange that the number of IRQ is 0. This > bogus interrupt appears only when timer is started. When I have > registered my timer interrupt handler with irq_install_handler, but not > started timer, everything was ok, and I was able to check with irqinfo > that my handler is registered. > > I would be grateful for some suggestions what can be wrong. > > Best regards! Typically "IRQ 0" is an indication that there was no interrupt found when the ISR went to read the interrupt reason. I can think of two reasons for this: 1) (Typical reason): an interrupt happened and was withdrawn (level sensitive interrupt: it went inactive) before the processor got to the ISR. 2) (Likely your problem): The ISR cleared the interrupt improperly so that the processor (re)latched the interrupt that was cleared. When you exit the ISR, the processor has a pending interrupt so it re-enters the ISR, but doesn't find anything to do. Typically this is caused by clearing the processor side of the interrupt and _then_ clearing the source. You should clear the source _first_ and then the processor (or, for a multi-level interrupt, clear from the furthest out inward). This should be a non-fatal error, but should be understood and fixed. gvb