- if (likely(!(desc->status & IRQ_DISABLED)))
- desc->handler->enable(irq);
- }
- cpus_clear(pending_irq_cpumask[irq]);
+ if (likely(!(desc->status & IRQ_MOVE_PENDING)))
+ return;
+
+ if (unlikely(desc->status & IRQ_DISABLED))
+ return;
+
+ desc->chip->mask(irq);
+ move_masked_irq(irq);
+ desc->chip->unmask(irq);