diff options
-rw-r--r-- | arch/powerpc/platforms/pseries/xics.c | 9 |
1 files changed, 5 insertions, 4 deletions
diff --git a/arch/powerpc/platforms/pseries/xics.c b/arch/powerpc/platforms/pseries/xics.c index 1bccd4a56b57..c95697912fea 100644 --- a/arch/powerpc/platforms/pseries/xics.c +++ b/arch/powerpc/platforms/pseries/xics.c | |||
@@ -208,9 +208,6 @@ static int get_irq_server(unsigned int virq, unsigned int strict_check) | |||
208 | cpumask_t cpumask = irq_desc[virq].affinity; | 208 | cpumask_t cpumask = irq_desc[virq].affinity; |
209 | cpumask_t tmp = CPU_MASK_NONE; | 209 | cpumask_t tmp = CPU_MASK_NONE; |
210 | 210 | ||
211 | if (! cpu_isset(default_server, cpu_online_map)) | ||
212 | xics_update_irq_servers(); | ||
213 | |||
214 | if (!distribute_irqs) | 211 | if (!distribute_irqs) |
215 | return default_server; | 212 | return default_server; |
216 | 213 | ||
@@ -685,8 +682,8 @@ void __init xics_init_IRQ(void) | |||
685 | if (found == 0) | 682 | if (found == 0) |
686 | return; | 683 | return; |
687 | 684 | ||
688 | xics_init_host(); | ||
689 | xics_update_irq_servers(); | 685 | xics_update_irq_servers(); |
686 | xics_init_host(); | ||
690 | 687 | ||
691 | if (firmware_has_feature(FW_FEATURE_LPAR)) | 688 | if (firmware_has_feature(FW_FEATURE_LPAR)) |
692 | ppc_md.get_irq = xics_get_irq_lpar; | 689 | ppc_md.get_irq = xics_get_irq_lpar; |
@@ -779,6 +776,10 @@ void xics_migrate_irqs_away(void) | |||
779 | int cpu = smp_processor_id(), hw_cpu = hard_smp_processor_id(); | 776 | int cpu = smp_processor_id(), hw_cpu = hard_smp_processor_id(); |
780 | unsigned int irq, virq; | 777 | unsigned int irq, virq; |
781 | 778 | ||
779 | /* If we used to be the default server, move to the new "boot_cpuid" */ | ||
780 | if (hw_cpu == default_server) | ||
781 | xics_update_irq_servers(); | ||
782 | |||
782 | /* Reject any interrupt that was queued to us... */ | 783 | /* Reject any interrupt that was queued to us... */ |
783 | xics_set_cpu_priority(0); | 784 | xics_set_cpu_priority(0); |
784 | 785 | ||