--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -526,6 +526,9 @@ handle_percpu_irq(unsigned int irq, stru
 
 	kstat_this_cpu.irqs[irq]++;
 
+	if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
+		return;
+
 	if (desc->chip->ack)
 		desc->chip->ack(irq);