On Fri, 2014-03-07 at 12:58 +0800, Chenhui Zhao wrote: > diff --git a/arch/powerpc/kernel/smp.c b/arch/powerpc/kernel/smp.c > index ac2621a..f3f4401 100644 > --- a/arch/powerpc/kernel/smp.c > +++ b/arch/powerpc/kernel/smp.c > @@ -405,8 +405,12 @@ void generic_cpu_die(unsigned int cpu) > > for (i = 0; i < 100; i++) { > smp_rmb(); > - if (per_cpu(cpu_state, cpu) == CPU_DEAD) > + if (per_cpu(cpu_state, cpu) == CPU_DEAD) { > +#ifdef CONFIG_PPC64 > + paca[cpu].cpu_start = 0; > +#endif
Why wasn't this needed by previous ppc64 machines? > diff --git a/arch/powerpc/platforms/85xx/smp.c > b/arch/powerpc/platforms/85xx/smp.c > index 2e5911e..0047883 100644 > --- a/arch/powerpc/platforms/85xx/smp.c > +++ b/arch/powerpc/platforms/85xx/smp.c > @@ -19,6 +19,7 @@ > #include <linux/kexec.h> > #include <linux/highmem.h> > #include <linux/cpu.h> > +#include <linux/smp.h> > > #include <asm/machdep.h> > #include <asm/pgtable.h> > @@ -46,6 +47,17 @@ static u64 timebase; > static int tb_req; > static int tb_valid; > > +#ifdef CONFIG_PPC_E500MC > +/* specify the cpu PM state when cpu dies, PH15/NAP is the default */ > +int qoriq_cpu_die_state = E500_PM_PH15; > +#endif static? Is there any way to modify this other than modifying source code? BTW, QorIQ doesn't imply an e500mc derivative. > @@ -125,6 +138,34 @@ static void mpc85xx_take_timebase(void) > } > > #ifdef CONFIG_HOTPLUG_CPU > +#ifdef CONFIG_PPC_E500MC > +static void qoriq_cpu_die(void) > +{ > + unsigned int cpu = smp_processor_id(); > + > + local_irq_disable(); > +#ifdef CONFIG_PPC64 > + __hard_irq_disable(); > +#endif Why this instead of one call to hard_irq_disable() (no leading underscores)? -Scott -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/