irqchip/gic: Only allow the primary GIC to set the CPU map
authorJon Hunter <jonathanh@nvidia.com>
Fri, 31 Jul 2015 08:44:11 +0000 (09:44 +0100)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 4 Aug 2015 12:14:06 +0000 (14:14 +0200)
commit567e5a014848c6aeb1d6fc862b1b5d0183760259
tree6214083d5af0debf4827573b15e3987612aea373
parent36f024ed8fc96f50f01d171097237ebe51dadee7
irqchip/gic: Only allow the primary GIC to set the CPU map

The gic_init_bases() function initialises an array that stores the mapping
between the GIC and CPUs. This array is a global array that is
unconditionally initialised on every call to gic_init_bases(). Although,
it is not common for there to be more than one GIC instance, there are
some devices that do support nested GIC controllers and gic_init_bases()
can be called more than once.

A 2nd call to gic_init_bases() will clear the previous CPU mapping and
will only setup the mapping again for the CPU calling gic_init_bases().
Fix this by only allowing the CPU map to be configured for the primary GIC.

For secondary GICs the CPU map is not relevant because these GICs do not
directly route the interrupts to the main CPU(s) but to other GICs or
devices.

Signed-off-by: Jon Hunter <jonathanh@nvidia.com>
Reviewed-by: Marc Zyngier <marc.zyngier@arm.com>
Cc: <linux-arm-kernel@lists.infradead.org>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: Nicolas Pitre <nicolas.pitre@linaro.org>
Cc: Jason Cooper <jason@lakedaemon.net>
Link: http://lkml.kernel.org/r/1438332252-25248-1-git-send-email-jonathanh@nvidia.com
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
drivers/irqchip/irq-gic.c
This page took 0.024962 seconds and 5 git commands to generate.