2005-05-16 01:09:02

by Zhang, Yanmin

[permalink] [raw]
Subject: [PATCH] Haunted spurious interrupt

On my IA64 machine, after kernel 2.6.12-rc3 boots, an edge-triggered
interrupt (IRQ 46) keeps triggered over and over again. There is no IRQ
46 interrupt action handler. It has lots of impact on performance.
Kernel 2.6.10 and its prior versions have no the problem. Basically,
kernel 2.6.10 will mask the spurious edge interrupt if the interrupt is
triggered for the second time and its status includes
IRQ_DISABLE|IRQ_PENDING. Originally, IA64 kernel has its own specific
_irq_desc definitions in file arch/ia64/kernel/irq.c. The definition
initiates _irq_desc[irq].status to IRQ_DISABLE. Since kernel 2.6.11, it
was moved to architecture independent codes, i.e. kernel/irq/handle.c,
but kernel/irq/handle.c initiates _irq_desc[irq].status to 0 instead of
IRQ_DISABLE.

The attachment is a patch against kernel 2.6.12-rc3. I tested it on my
IA64 and IA32 machines.

Signed-off-by: Zhang Yanmin <[email protected]>

<<haunted_interrupt_2.6.12-rc3.patch>>


Attachments:
haunted_interrupt_2.6.12-rc3.patch (438.00 B)
haunted_interrupt_2.6.12-rc3.patch