> -----Original Message----- > From: linuxppc-dev-bounces+bharat.bhushan=freescale....@lists.ozlabs.org > [mailto:linuxppc-dev- > bounces+bharat.bhushan=freescale....@lists.ozlabs.org] On Behalf Of Kumar > Gala > Sent: Friday, October 14, 2011 1:23 PM > To: linuxppc-...@ozlabs.org > Subject: [PATCH] powerpc/85xx: Setup secondary cores PIR with hard SMP id > > Normally logical and hard cpu ID are the same, however in same cases like > on the P3060 they may differ. Where the logical is 0..5, the hard id > goes 0,1,4..7. This can causes issues for places we utilize PIR to index > into array like in debug exception handlers for finding the exception > stack.
Kumar, What should be the CONFIG_NR_CPUS for this? 8 or 6 ? Thanks -Bharat > > Move to setting up PIR with hard_smp_processor_id fixes the issue. > > Signed-off-by: Kumar Gala <ga...@kernel.crashing.org> > --- > arch/powerpc/platforms/85xx/smp.c | 9 +++++---- > 1 files changed, 5 insertions(+), 4 deletions(-) > > diff --git a/arch/powerpc/platforms/85xx/smp.c > b/arch/powerpc/platforms/85xx/smp.c > index d6e4746..190d111 100644 > --- a/arch/powerpc/platforms/85xx/smp.c > +++ b/arch/powerpc/platforms/85xx/smp.c > @@ -48,10 +48,11 @@ smp_85xx_kick_cpu(int nr) > const u64 *cpu_rel_addr; > __iomem u32 *bptr_vaddr; > struct device_node *np; > - int n = 0; > + int n = 0, hw_cpu = get_hard_smp_processor_id(nr); > int ioremappable; > > - WARN_ON (nr < 0 || nr >= NR_CPUS); > + WARN_ON(nr < 0 || nr >= NR_CPUS); > + WARN_ON(hw_cpu < 0 || hw_cpu >= NR_CPUS); > > pr_debug("smp_85xx_kick_cpu: kick CPU #%d\n", nr); > > @@ -79,7 +80,7 @@ smp_85xx_kick_cpu(int nr) > > local_irq_save(flags); > > - out_be32(bptr_vaddr + BOOT_ENTRY_PIR, nr); > + out_be32(bptr_vaddr + BOOT_ENTRY_PIR, hw_cpu); > #ifdef CONFIG_PPC32 > out_be32(bptr_vaddr + BOOT_ENTRY_ADDR_LOWER, __pa(__early_start)); > > @@ -88,7 +89,7 @@ smp_85xx_kick_cpu(int nr) > (ulong)(bptr_vaddr + SIZE_BOOT_ENTRY)); > > /* Wait a bit for the CPU to ack. */ > - while ((__secondary_hold_acknowledge != nr) && (++n < 1000)) > + while ((__secondary_hold_acknowledge != hw_cpu) && (++n < 1000)) > mdelay(1); > #else > smp_generic_kick_cpu(nr); > -- > 1.7.3.4 > > _______________________________________________ > Linuxppc-dev mailing list > Linuxppc-dev@lists.ozlabs.org > https://lists.ozlabs.org/listinfo/linuxppc-dev _______________________________________________ Linuxppc-dev mailing list Linuxppc-dev@lists.ozlabs.org https://lists.ozlabs.org/listinfo/linuxppc-dev