#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:
Blocking:

Description

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 Feb 11, 2016 at 2:25:09 PM by Martin Galvan

Version: 4.104.11

comment:2 Changed on Feb 11, 2016 at 10:58:04 PM 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 Feb 27, 2016 at 11:25:55 PM by Martin Galvan <martin.galvan@…>

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

In 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.