"ack" is actually a mask in the parent irq. The demultiplexer and the handlers run with interrupts disabled. No point in masking and unmasking the parent. Signed-off-by: Thomas Gleixner --- drivers/irqchip/spear-shirq.c | 6 ------ 1 file changed, 6 deletions(-) Index: linux/drivers/irqchip/spear-shirq.c =================================================================== --- linux.orig/drivers/irqchip/spear-shirq.c +++ linux/drivers/irqchip/spear-shirq.c @@ -222,12 +222,8 @@ static struct irq_chip shirq_chip = { static void shirq_handler(unsigned irq, struct irq_desc *desc) { struct spear_shirq *shirq = irq_get_handler_data(irq); - struct irq_data *idata = irq_desc_get_irq_data(desc); - struct irq_chip *chip = irq_data_get_irq_chip(idata); u32 pend; - chip->irq_ack(idata); - pend = readl(shirq->base + shirq->regs.status_reg) & shirq->mask; pend >>= shirq->offset; @@ -237,8 +233,6 @@ static void shirq_handler(unsigned irq, pend &= ~(0x1 << irq); generic_handle_irq(shirq->virq_base + irq); } - - chip->irq_unmask(idata); } static void __init spear_shirq_register(struct spear_shirq *shirq, -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/