The core code calls mask_ack() which calls irq_ack() and irq_mask() for the case where an interrupt is disabled and marked pending. That seems to be a leftover from the old __do_IRQ() mode. Signed-off-by: Thomas Gleixner <tglx@xxxxxxxxxxxxx> --- arch/ia64/kernel/iosapic.c | 9 --------- 1 file changed, 9 deletions(-) Index: linux-2.6-tip/arch/ia64/kernel/iosapic.c =================================================================== --- linux-2.6-tip.orig/arch/ia64/kernel/iosapic.c +++ linux-2.6-tip/arch/ia64/kernel/iosapic.c @@ -450,18 +450,9 @@ static void iosapic_ack_edge_irq (struct irq_data *data) { unsigned int irq = data->irq; - struct irq_desc *idesc = irq_desc + irq; irq_complete_move(irq); move_native_irq(irq); - /* - * Once we have recorded IRQ_PENDING already, we can mask the - * interrupt for real. This prevents IRQ storms from unhandled - * devices. - */ - if ((idesc->status & (IRQ_PENDING|IRQ_DISABLED)) == - (IRQ_PENDING|IRQ_DISABLED)) - mask_irq(data); } #define iosapic_enable_edge_irq unmask_irq -- To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html