Notice: We have migrated to GitLab launching 2024-05-01 see here:

#2580 closed defect (fixed)

Beaglebone: IRQ handler doesn't work correctly with other components

Reported by: Martin Galvan Owned by: Martin Galvan <martin.galvan@…>
Priority: normal Milestone: 4.11
Component: bsps Version: 4.11
Severity: major Keywords:
Cc: Sebastian Huber, Ben Gras Blocked By:


The Beaglebone IRQ handler is breaking the GPIO API, the RTEMS interrupt server and we're now seeing spurious interrupts when trying to use the I2C module. Even worse, while the code states that these spurious IRQs are being ignored, they're not being acknowledged at the INTC level. This results in spurious IRQs triggering forever.

Change History (3)

comment:1 Changed on 02/11/16 at 14:25:09 by Martin Galvan

Version: 4.104.11

comment:2 Changed on 02/11/16 at 22:58:04 by Ben Gras

This looks like great work. Let me test it & then I'll merge it. Thank you for the report & patch.

comment:3 Changed on 02/27/16 at 23:25:55 by Martin Galvan <martin.galvan@…>

Owner: set to Martin Galvan <martin.galvan@…>
Resolution: fixed
Status: newclosed

In [changeset:"8c5c53f4788eb74264a053f8293fed26da85b764/rtems"]:

am335x irq handling improvement

This patch makes the following changes to the Beaglebone IRQ handling code:

  • Disable support for nested interrupts.
  • Detect spurious IRQs using the SPURIOUSIRQ field of the INTC_SIR_IRQ register.
  • Acknowledge spurious IRQs by setting the NewIRQAgr bit of the INTC_CONTROL register. This cleans the SPURIOUSIRQ field and allows new interrupts to be generated.
  • Improve the get_mir_reg function a bit.

Closes #2580.

Note: See TracTickets for help on using tickets.