• Zhang, Yanmin's avatar
    [PATCH] spurious interrupt fix · 4f167fb4
    Zhang, Yanmin authored
    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.
    Signed-off-by: default avatarZhang Yanmin <yanmin.zhang@intel.com>
    Signed-off-by: default avatarAndrew Morton <akpm@osdl.org>
    Signed-off-by: default avatarLinus Torvalds <torvalds@osdl.org>
    4f167fb4
handle.c 4.74 KB