diff options
Diffstat (limited to 'arch/sparc64/kernel/irq.c')
-rw-r--r-- | arch/sparc64/kernel/irq.c | 20 |
1 files changed, 20 insertions, 0 deletions
diff --git a/arch/sparc64/kernel/irq.c b/arch/sparc64/kernel/irq.c index a1c916f35baa..8cb3358674f5 100644 --- a/arch/sparc64/kernel/irq.c +++ b/arch/sparc64/kernel/irq.c | |||
@@ -803,6 +803,26 @@ void handler_irq(int irq, struct pt_regs *regs) | |||
803 | set_irq_regs(old_regs); | 803 | set_irq_regs(old_regs); |
804 | } | 804 | } |
805 | 805 | ||
806 | #ifdef CONFIG_HOTPLUG_CPU | ||
807 | void fixup_irqs(void) | ||
808 | { | ||
809 | unsigned int irq; | ||
810 | |||
811 | for (irq = 0; irq < NR_IRQS; irq++) { | ||
812 | unsigned long flags; | ||
813 | |||
814 | spin_lock_irqsave(&irq_desc[irq].lock, flags); | ||
815 | if (irq_desc[irq].action && | ||
816 | !(irq_desc[irq].status & IRQ_PER_CPU)) { | ||
817 | if (irq_desc[irq].chip->set_affinity) | ||
818 | irq_desc[irq].chip->set_affinity(irq, | ||
819 | irq_desc[irq].affinity); | ||
820 | } | ||
821 | spin_unlock_irqrestore(&irq_desc[irq].lock, flags); | ||
822 | } | ||
823 | } | ||
824 | #endif | ||
825 | |||
806 | struct sun5_timer { | 826 | struct sun5_timer { |
807 | u64 count0; | 827 | u64 count0; |
808 | u64 limit0; | 828 | u64 limit0; |