Donate to e Foundation | Murena handsets with /e/OS | Own a part of Murena! Learn more

Commit aba99437 authored by Linus Torvalds's avatar Linus Torvalds
Browse files

Merge branch 'irq-fixes-for-linus' of...

Merge branch 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip

* 'irq-fixes-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/linux-2.6-tip:
  genirq: Prevent irq storm on migration
parents 49abda98 f1a06390
Loading
Loading
Loading
Loading
+11 −3
Original line number Diff line number Diff line
@@ -56,6 +56,7 @@ void move_masked_irq(int irq)
void move_native_irq(int irq)
{
	struct irq_desc *desc = irq_to_desc(irq);
	bool masked;

	if (likely(!(desc->status & IRQ_MOVE_PENDING)))
		return;
@@ -63,8 +64,15 @@ void move_native_irq(int irq)
	if (unlikely(desc->status & IRQ_DISABLED))
		return;

	/*
	 * Be careful vs. already masked interrupts. If this is a
	 * threaded interrupt with ONESHOT set, we can end up with an
	 * interrupt storm.
	 */
	masked = desc->status & IRQ_MASKED;
	if (!masked)
		desc->irq_data.chip->irq_mask(&desc->irq_data);
	move_masked_irq(irq);
	if (!masked)
		desc->irq_data.chip->irq_unmask(&desc->irq_data);
}