--- a/kernel/irq/chip.c
+++ b/kernel/irq/chip.c
@@ -678,6 +678,9 @@
 
 	kstat_incr_irqs_this_cpu(irq, desc);
 
+	if (unlikely(!desc->action || (desc->status & IRQ_DISABLED)))
+		return;
+
 	if (desc->irq_data.chip->irq_ack)
 		desc->irq_data.chip->irq_ack(&desc->irq_data);