linux/drivers/irqchip
Jon Hunter 567e5a0148 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>
2015-08-04 14:14:06 +02:00
..
exynos-combiner.c drivers/irqchip: Replace pr_warning by pr_warn 2015-07-22 18:37:42 +02:00
irq-armada-370-xp.c irqchip: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc 2015-07-11 23:14:27 +02:00
irq-atmel-aic5.c irqchip: Appropriate __init annotation for const data 2015-07-27 08:09:38 +02:00
irq-atmel-aic-common.c irqchip: atmel-aic-common: Prevent clobbering of priority when changing IRQ type 2015-01-07 12:41:45 +00:00
irq-atmel-aic-common.h irqchip: atmel-aic: Add irq fixup for RTT block 2014-11-09 04:36:38 +00:00
irq-atmel-aic.c irqchip: Appropriate __init annotation for const data 2015-07-27 08:09:38 +02:00
irq-bcm2835.c irqchip: Appropriate __init annotation for const data 2015-07-27 08:09:38 +02:00
irq-bcm7038-l1.c irqchip/bcm7038-l1: Consolidate chained IRQ handler install/remove 2015-07-11 23:14:25 +02:00
irq-bcm7120-l2.c irqchip/bcm7120-l2: Fix interrupt status for multiple parent IRQs 2015-07-27 08:09:38 +02:00
irq-brcmstb-l2.c irqchip/brcmstb-l2: Prepare brcmstb_l2_intc_irq_handle for irq argument removal 2015-07-16 22:53:22 +02:00
irq-clps711x.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-crossbar.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-digicolor.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-dw-apb-ictl.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-gic-common.c irqchip: gic: Simplify gic_configure_irq by using IRQCHIP_SET_TYPE_MASKED 2015-06-05 22:26:33 +02:00
irq-gic-common.h irqchip: gic: Allow interrupt level to be set for PPIs 2015-01-26 11:38:23 +01:00
irq-gic-v2m.c irqchip/GICv2m: Add platform MSI support 2015-07-30 00:14:39 +02:00
irq-gic-v3-its-pci-msi.c irqchip/gicv3-its: Make the PCI/MSI code standalone 2015-07-30 00:14:38 +02:00
irq-gic-v3-its-platform-msi.c irqchip/gicv3-its: Add platform MSI support 2015-07-30 00:14:38 +02:00
irq-gic-v3-its.c irqchip/gicv3-its: Make the PCI/MSI code standalone 2015-07-30 00:14:38 +02:00
irq-gic-v3.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-gic.c irqchip/gic: Only allow the primary GIC to set the CPU map 2015-08-04 14:14:06 +02:00
irq-hip04.c irqchip/gic: Enable SKIP_SET_WAKE and MASK_ON_SUSPEND 2015-07-27 08:09:37 +02:00
irq-i8259.c irqchip/i8259: Prepare i8259_irq_dispatch for irq argument removal 2015-07-31 22:20:04 +02:00
irq-imgpdc.c irqchip/imgpdc: Prepare pdc_intc_perip_isr for irq argument removal 2015-07-16 22:53:22 +02:00
irq-ingenic.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-keystone.c irqchip/keystone: Prepare keystone_irq_handler for irq argument removal 2015-07-16 22:53:22 +02:00
irq-metag-ext.c irqchip/metag-ext: Use irq_set_chip_handler_name_locked() 2015-07-12 09:39:11 +02:00
irq-metag.c irqchip/metag: Consolidate chained IRQ handler install/remove 2015-07-11 23:14:26 +02:00
irq-mips-cpu.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-mips-gic.c Merge branch 'linus' into irq/core 2015-07-30 00:13:24 +02:00
irq-mmp.c irqchip/mmp: Prepare icu_mux_irq_demux for irq argument removal 2015-07-16 22:53:22 +02:00
irq-moxart.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-mtk-sysirq.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-mxs.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-nvic.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-omap-intc.c irqchip: omap-intc: Improve IRQ handler 2015-07-22 18:37:42 +02:00
irq-or1k-pic.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-orion.c irqchip: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc 2015-07-11 23:14:27 +02:00
irq-renesas-h8s.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-renesas-h8300h.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-renesas-intc-irqpin.c irqchip: Constify irq_domain_ops 2015-05-05 10:45:58 +02:00
irq-renesas-irqc.c irqchip/renesas-irqc: Make use of irq_find_mapping() 2015-07-20 13:19:00 +02:00
irq-s3c24xx.c irqchip/s3c24xx: Prepare s3c_irq_demux for irq argument removal 2015-07-16 22:53:22 +02:00
irq-sa11x0.c Merge branch 'sa1100' into for-next 2015-06-12 21:18:13 +01:00
irq-sirfsoc.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-st.c irqchip: st: Supply new driver for STi based devices 2015-03-03 19:48:53 +00:00
irq-sun4i.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-sunxi-nmi.c irqchip: Use irq_desc_get_xxx() to avoid redundant lookup of irq_desc 2015-07-11 23:14:27 +02:00
irq-tb10x.c irqchip/tb10x: Prepare tb10x_irq_cascade for irq argument removal 2015-07-16 22:53:22 +02:00
irq-tegra.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-versatile-fpga.c irqchip/versatile-fpga: Prepare fpga_irq_handle for irq argument removal 2015-07-16 22:53:23 +02:00
irq-vf610-mscm-ir.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-vic.c irqchip/vic: Consolidate chained IRQ handler install/remove 2015-07-11 23:14:27 +02:00
irq-vt8500.c irqchip/vt8500: Use irq_set_handler_locked() 2015-07-12 09:37:47 +02:00
irq-xtensa-mx.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-xtensa-pic.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irq-zevio.c irqchip: Prepare for local stub header removal 2015-07-11 23:14:23 +02:00
irqchip.c irqchip: Add GICv2 specific ACPI boot support 2015-03-26 15:13:07 +00:00
Kconfig MIPS/irqchip: Move i8259 irqchip driver to drivers/irqchip 2015-07-31 22:04:49 +02:00
Makefile MIPS/irqchip: Move i8259 irqchip driver to drivers/irqchip 2015-07-31 22:04:49 +02:00
spear-shirq.c Merge branch 'linus' into irq/core 2015-07-30 00:13:24 +02:00