diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c index 5c330c3366e42e2ec500cd8fe98fbdd7c94c3bc8..36d67a8d7cbbb1b1d2c798dc0958f4f5d792e756 100644 --- a/arch/powerpc/kernel/smp.c +++ b/arch/powerpc/kernel/smp.c @@ -510,6 +510,7 @@ int __devinit start_secondary(void *unused) smp_store_cpu_info(cpu); set_dec(tb_ticks_per_jiffy); + preempt_disable(); cpu_callin_map[cpu] = 1; smp_ops->setup_cpu(cpu); diff --git a/arch/ppc/kernel/idle.c b/arch/ppc/kernel/idle.c index 3c4e4cb610743e070d7237ed7df5fff2fa67c75e..821a75e45602b9c42abd3de2f0d1949cb7f0f48e 100644 --- a/arch/ppc/kernel/idle.c +++ b/arch/ppc/kernel/idle.c @@ -63,7 +63,7 @@ void cpu_idle(void) int cpu = smp_processor_id(); for (;;) { - while (need_resched()) { + while (!need_resched()) { if (ppc_md.idle != NULL) ppc_md.idle(); else