From: Zwane Mwaikambo I seem to have broken this when I moved the clearing of the dying cpu to arch specific code. Signed-off-by: Zwane Mwaikambo Signed-off-by: Andrew Morton --- 25-akpm/arch/ppc64/kernel/pSeries_smp.c | 4 +++- 1 files changed, 3 insertions(+), 1 deletion(-) diff -puN arch/ppc64/kernel/pSeries_smp.c~ppc64-fix-cpu-hotplug arch/ppc64/kernel/pSeries_smp.c --- 25/arch/ppc64/kernel/pSeries_smp.c~ppc64-fix-cpu-hotplug Mon Dec 20 14:28:20 2004 +++ 25-akpm/arch/ppc64/kernel/pSeries_smp.c Mon Dec 20 14:28:20 2004 @@ -92,11 +92,13 @@ int __cpu_disable(void) { /* FIXME: go put this in a header somewhere */ extern void xics_migrate_irqs_away(void); + int cpu = smp_processor_id(); + cpu_clear(cpu, cpu_online_map); systemcfg->processorCount--; /*fix boot_cpuid here*/ - if (smp_processor_id() == boot_cpuid) + if (cpu == boot_cpuid) boot_cpuid = any_online_cpu(cpu_online_map); /* FIXME: abstract this to not be platform specific later on */ _