Subject: [PATCH 1/6] ARM: Add inline function smp_cpu() for early init testing

From: [email-masked] (Will Deacon)
Date: Fri, 3 Sep 2010 09:58:23 +0100

Hi Tony,

> -----Original Message-----
> From: Tony Lindgren [mailto:tony at atomide.com]
> Sent: 03 September 2010 03:22
> To: Russell King - ARM Linux
> Cc: linux-omap at vger.kernel.org; linux-arm-kernel at lists.infradead.org; Bryan Wu; Will Deacon
> Subject: Re: [PATCH 1/6] ARM: Add inline function smp_cpu() for early init testing
> 
> * Tony Lindgren <[email-masked]> [100902 17:00]:
> > * Tony Lindgren <[email-masked]> [100902 12:20]:
> >
> > Heh, turns out there's a bit of a bug in the code snippet above :) It should
> > be !((mpidr >> 30) & 1) instead, otherwise it always returns 0.

Gah! Well spotted! I think I was getting away with this because the platforms
I was using for testing didn't need tlb ops to be broadcast.

> This too can check for value of 2. Also we probably want to do the
> CPU type checks too. Updated patch below.

Your patches are turning up as attachments here, so I can't comment
inline. The only problem I can see is for SMP v6 platforms (ARM11MPCore)
where the MPIDR is actually the `CPU ID register' with bits 31:12 set to
zero, so we'll say it's a UP core.

Since 11MPCore is the only ARM SMP v6 processor and you're checking
the implementor ID anyway, it might be easier to check for the 11MPCore
explicitly, ((read_cpuid_id() & 0xfff0) == 0xB020) rather than check for v6/v7.

Or we could just ignore v6 for now.

Will