aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
-rw-r--r--arch/powerpc/platforms/pseries/xics.c9
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