linux/drivers/irqchip
Tomasz Figa 59c04db2b0 irqchip: gic: Fix core ID calculation when topology is read from DT
commit 29e697b118 upstream.

Certain GIC implementation, namely those found on earlier, single
cluster, Exynos SoCs, have registers mapped without per-CPU banking,
which means that the driver needs to use different offset for each CPU.

Currently the driver calculates the offset by multiplying value returned
by cpu_logical_map() by CPU offset parsed from DT. This is correct when
CPU topology is not specified in DT and aforementioned function returns
core ID alone. However when DT contains CPU topology, the function
changes to return cluster ID as well, which is non-zero on mentioned
SoCs and so breaks the calculation in GIC driver.

This patch fixes this by masking out cluster ID in CPU offset
calculation so that only core ID is considered. Multi-cluster Exynos
SoCs already have banked GIC implementations, so this simple fix should
be enough.

Reported-by: Lorenzo Pieralisi <lorenzo.pieralisi@arm.com>
Reported-by: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Signed-off-by: Tomasz Figa <t.figa@samsung.com>
Fixes: db0d4db22a ("ARM: gic: allow GIC to support non-banked setups")
Link: https://lkml.kernel.org/r/1405610624-18722-1-git-send-email-t.figa@samsung.com
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
Signed-off-by: Greg Kroah-Hartman <gregkh@linuxfoundation.org>
2014-07-28 08:06:02 -07:00
..
Kconfig Xtensa patchset for 3.14-rc1 2014-01-25 10:49:30 -08:00
Makefile Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip 2014-02-05 16:02:53 -08:00
exynos-combiner.c irqchip: exynos-combiner: remove hard-coded irq_base value 2013-12-02 07:15:51 +09:00
irq-armada-370-xp.c irqchip: armada-370-xp: Fix releasing of MSIs 2014-06-07 10:28:13 -07:00
irq-bcm2835.c irqchip: bcm2835: Convert to use IRQCHIP_DECLARE macro 2013-11-07 10:37:37 +01:00
irq-dw-apb-ictl.c irqchip: add DesignWare APB ICTL interrupt controller 2013-12-13 16:29:40 +01:00
irq-gic.c irqchip: gic: Fix core ID calculation when topology is read from DT 2014-07-28 08:06:02 -07:00
irq-imgpdc.c irq-imgpdc: add ImgTec PDC irqchip driver 2013-08-21 14:17:56 +01:00
irq-metag-ext.c irq-metag*: stop set_affinity vectoring to offline cpus 2014-02-25 22:35:06 +00:00
irq-metag.c irq-metag*: stop set_affinity vectoring to offline cpus 2014-02-25 22:35:06 +00:00
irq-mmp.c irqchip: mmp: avoid to include irqs head file 2013-08-24 17:45:47 +08:00
irq-moxart.c irqchip: Add support for MOXA ART SoCs 2013-07-05 11:39:25 +02:00
irq-mxs.c ARM: mxs: icoll: Fix interrupts gpio bank 0 2013-06-03 23:18:15 +08:00
irq-nvic.c irqchip: nvic: Fix wrong num_ct argument for irq_alloc_domain_generic_chips() 2013-07-05 11:39:24 +02:00
irq-orion.c irqchip: orion: Fix getting generic chip pointer. 2014-02-21 21:46:56 +00:00
irq-renesas-intc-irqpin.c irqchip: renesas-intc-irqpin: Fix register bitfield shift calculation 2013-11-24 15:55:17 +09:00
irq-renesas-irqc.c irqchip: renesas-irqc: Enable mask on suspend 2014-01-22 21:48:55 +01:00
irq-s3c24xx.c ARM: arm-soc driver changes for 3.10 2013-05-04 12:31:18 -07:00
irq-sirfsoc.c irqchip: sirf: set IRQ_LEVEL status_flags 2014-01-08 22:02:14 -08:00
irq-sun4i.c irqchip: sun4i: Staticize sun4i_irq_ack() 2013-07-05 11:39:24 +02:00
irq-tb10x.c irqchip: Add TB10x interrupt controller driver 2013-06-25 18:54:21 +02:00
irq-versatile-fpga.c irqchip: versatile FPGA: support cascaded interrupts from DT 2014-01-03 22:26:13 +01:00
irq-vic.c irqchip: vic: Parse interrupt and resume masks from device tree 2013-09-17 06:48:27 +09:00
irq-vt8500.c irqchip: vt8500: Staticize local symbols 2013-07-05 11:39:24 +02:00
irq-xtensa-mx.c xtensa: add MX irqchip 2014-01-14 10:19:58 -08:00
irq-xtensa-pic.c xtensa: move built-in PIC to drivers/irqchip 2014-01-14 10:19:56 -08:00
irq-zevio.c irqchip: Add support for TI-NSPIRE irqchip 2014-01-22 21:48:55 +01:00
irqchip.c irqchip: add basic infrastructure 2013-01-10 11:44:38 -06:00
irqchip.h irqchip: add basic infrastructure 2013-01-10 11:44:38 -06:00
spear-shirq.c irqchip: spear_shirq: Fix interrupt offset 2014-07-09 11:18:28 -07:00