- 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 (likely(!(desc->status & IRQ_DISABLED)))
+ desc->chip->disable(irq);
+
+ move_masked_irq(irq);
+
+ if (likely(!(desc->status & IRQ_DISABLED)))
+ desc->chip->enable(irq);