Commit 56d3eef2 authored by Voss, Nikolaus's avatar Voss, Nikolaus Committed by Haavard Skinnemoen

avr32: allow system timer to share interrupt to make OProfile work

The following patch allows the avr32_comparator interrupt to be shared.
This is necessary as the avr32 oprofile driver shares the irq group 0
with the timer.

To make OProfile actually work on AVR32, a small patch for oprofiled is
also needed (posted to the oprofile mailing list).
Signed-off-by: default avatarNikolaus Voss <n.voss@weinmann.de>
[haavard.skinnemoen@atmel.com: set IRQF_SHARED unconditionally]
Signed-off-by: default avatarHaavard Skinnemoen <haavard.skinnemoen@atmel.com>
parent db6ea2c1
...@@ -43,6 +43,9 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id) ...@@ -43,6 +43,9 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
{ {
struct clock_event_device *evdev = dev_id; struct clock_event_device *evdev = dev_id;
if (unlikely(!(intc_get_pending(0) & 1)))
return IRQ_NONE;
/* /*
* Disable the interrupt until the clockevent subsystem * Disable the interrupt until the clockevent subsystem
* reprograms it. * reprograms it.
...@@ -55,7 +58,8 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id) ...@@ -55,7 +58,8 @@ static irqreturn_t timer_interrupt(int irq, void *dev_id)
static struct irqaction timer_irqaction = { static struct irqaction timer_irqaction = {
.handler = timer_interrupt, .handler = timer_interrupt,
.flags = IRQF_TIMER | IRQF_DISABLED, /* Oprofile uses the same irq as the timer, so allow it to be shared */
.flags = IRQF_TIMER | IRQF_DISABLED | IRQF_SHARED,
.name = "avr32_comparator", .name = "avr32_comparator",
}; };
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment