Though a comment in arch/i386/kernel/irq.c: do_IRQ() clearly states: * 0 return value means that this irq is already being * handled by some other CPU. (or is disabled) it seems that the function can only ever return (1). We wrote some low-level interrupt handling code that depends on the correct value of this function. Is the following patch what was initially desired? Clearly this code came from (or vice-versa) arch/i386/kernel/irq.c. I've sent a patch out for that version to linux-kernel. Thanks, William Jhun Index: arch/mips/kernel/irq.c =================================================================== RCS file: /cvs/linux/arch/mips/kernel/irq.c,v retrieving revision 1.38.2.6 diff -c -r1.38.2.6 irq.c *** arch/mips/kernel/irq.c 2002/05/15 20:41:13 1.38.2.6 --- arch/mips/kernel/irq.c 2002/05/21 00:10:11 *************** *** 488,494 **** if (softirq_pending(cpu)) do_softirq(); ! return 1; } /** --- 488,494 ---- if (softirq_pending(cpu)) do_softirq(); ! return (action != NULL); } /**