ARM: GIC: fix GIC cpumask initialization
authorRussell King <rmk+kernel@arm.linux.org.uk>
Wed, 30 Jan 2013 23:49:57 +0000 (23:49 +0000)
committerRussell King <rmk+kernel@arm.linux.org.uk>
Fri, 8 Feb 2013 10:17:22 +0000 (10:17 +0000)
commit2bb3135166abcd59979cfcdd3696ba840b6b9d45
tree3ba104b4cf88a22f1a7e7facdb113a4664192e6d
parent949db153b6466c6f7cad5a427ecea94985927311
ARM: GIC: fix GIC cpumask initialization

Punit Agrawal reports:
> I was trying to boot 3.8-rc5 on Realview EB 11MPCore using
> realview-smp_defconfig as a starting point but the kernel failed to
> progress past the log below (config attached).
>
> Pawel suggested I try reverting 384a290283f - "ARM: gic: use a private
> mapping for CPU target interfaces" that you've authored. With this
> commit reverted the kernel boots.
>
> I am not quite sure why the commit breaks 11MPCore but Pawel (cc'd)
> might be able to shed light on that.

Some early GIC implementations return zero for the first distributor
CPU routing register.  This means we can't rely on that telling us
which CPU interface we're connected to.  We know that these platforms
implement PPIs for IRQs 29-31 - but we shouldn't assume that these
will always be populated.

So, instead, scan for a non-zero CPU routing register in the first
32 IRQs and use that as our CPU mask.

Reported-by: Punit Agrawal <punit.agrawal@arm.com>
Reviewed-by: Nicolas Pitre <nico@linaro.org>
Signed-off-by: Russell King <rmk+kernel@arm.linux.org.uk>
arch/arm/common/gic.c