diff options
Diffstat (limited to 'arch/powerpc/sysdev/mpic.c')
-rw-r--r-- | arch/powerpc/sysdev/mpic.c | 38 |
1 files changed, 1 insertions, 37 deletions
diff --git a/arch/powerpc/sysdev/mpic.c b/arch/powerpc/sysdev/mpic.c index 58d7a534f877..d5d3ff3d757e 100644 --- a/arch/powerpc/sysdev/mpic.c +++ b/arch/powerpc/sysdev/mpic.c | |||
@@ -598,42 +598,6 @@ static void __init mpic_scan_ht_pics(struct mpic *mpic) | |||
598 | 598 | ||
599 | #endif /* CONFIG_MPIC_U3_HT_IRQS */ | 599 | #endif /* CONFIG_MPIC_U3_HT_IRQS */ |
600 | 600 | ||
601 | #ifdef CONFIG_SMP | ||
602 | static int irq_choose_cpu(const struct cpumask *mask) | ||
603 | { | ||
604 | int cpuid; | ||
605 | |||
606 | if (cpumask_equal(mask, cpu_all_mask)) { | ||
607 | static int irq_rover = 0; | ||
608 | static DEFINE_RAW_SPINLOCK(irq_rover_lock); | ||
609 | unsigned long flags; | ||
610 | |||
611 | /* Round-robin distribution... */ | ||
612 | do_round_robin: | ||
613 | raw_spin_lock_irqsave(&irq_rover_lock, flags); | ||
614 | |||
615 | irq_rover = cpumask_next(irq_rover, cpu_online_mask); | ||
616 | if (irq_rover >= nr_cpu_ids) | ||
617 | irq_rover = cpumask_first(cpu_online_mask); | ||
618 | |||
619 | cpuid = irq_rover; | ||
620 | |||
621 | raw_spin_unlock_irqrestore(&irq_rover_lock, flags); | ||
622 | } else { | ||
623 | cpuid = cpumask_first_and(mask, cpu_online_mask); | ||
624 | if (cpuid >= nr_cpu_ids) | ||
625 | goto do_round_robin; | ||
626 | } | ||
627 | |||
628 | return get_hard_smp_processor_id(cpuid); | ||
629 | } | ||
630 | #else | ||
631 | static int irq_choose_cpu(const struct cpumask *mask) | ||
632 | { | ||
633 | return hard_smp_processor_id(); | ||
634 | } | ||
635 | #endif | ||
636 | |||
637 | /* Find an mpic associated with a given linux interrupt */ | 601 | /* Find an mpic associated with a given linux interrupt */ |
638 | static struct mpic *mpic_find(unsigned int irq) | 602 | static struct mpic *mpic_find(unsigned int irq) |
639 | { | 603 | { |
@@ -849,7 +813,7 @@ static void mpic_unmask_tm(struct irq_data *d) | |||
849 | struct mpic *mpic = mpic_from_irq_data(d); | 813 | struct mpic *mpic = mpic_from_irq_data(d); |
850 | unsigned int src = virq_to_hw(d->irq) - mpic->timer_vecs[0]; | 814 | unsigned int src = virq_to_hw(d->irq) - mpic->timer_vecs[0]; |
851 | 815 | ||
852 | DBG("%s: enable_tm: %d (tm %d)\n", mpic->name, irq, src); | 816 | DBG("%s: enable_tm: %d (tm %d)\n", mpic->name, d->irq, src); |
853 | mpic_tm_write(src, mpic_tm_read(src) & ~MPIC_VECPRI_MASK); | 817 | mpic_tm_write(src, mpic_tm_read(src) & ~MPIC_VECPRI_MASK); |
854 | mpic_tm_read(src); | 818 | mpic_tm_read(src); |
855 | } | 819 | } |