[PATCH 1/6] ARM: Add inline function smp_cpu() for early init testing
From: Will Deacon <hidden>
Date: 2010-09-03 08:58:23
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 [off-list ref] [100902 17:00]:quoted
* Tony Lindgren [off-list ref] [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