--- linux-2.6.18.orig/arch/avr32/kernel/time.c 2006-11-06 14:36:50.000000000 +0100 +++ linux-2.6.18/arch/avr32/kernel/time.c 2006-11-06 14:57:03.000000000 +0100 @@ -21,6 +21,7 @@ #include #include +#include #include #include #include @@ -136,6 +137,10 @@ { unsigned int count; + /* Check if interrupt is timer or performance counters */ + if (!(intc_get_pending(irq) & 1)) + return IRQ_NONE; + /* ack timer interrupt and try to set next interrupt */ count = avr32_hpt_read(); avr32_timer_ack(); @@ -164,7 +169,7 @@ static struct irqaction timer_irqaction = { .handler = timer_interrupt, - .flags = IRQF_DISABLED, + .flags = IRQF_DISABLED|IRQF_SHARED, .name = "timer", };