linux-uconsole/drivers/irqchip
Tomasz Figa 4003b69e90 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:00:06 -07:00
..
exynos-combiner.c ARM: late Exynos multiplatform changes 2013-05-07 11:28:42 -07:00
irq-armada-370-xp.c irqchip: armada-370-xp: fix IPI race condition 2014-02-20 11:06:11 -08:00
irq-bcm2835.c irqchip: irq-bcm2835: Add terminating entry for of_device_id table 2012-11-06 07:37:10 -08:00
irq-gic.c irqchip: gic: Fix core ID calculation when topology is read from DT 2014-07-28 08:00:06 -07:00
irq-metag-ext.c irq-metag*: stop set_affinity vectoring to offline cpus 2014-03-06 21:30:12 -08:00
irq-metag.c irq-metag*: stop set_affinity vectoring to offline cpus 2014-03-06 21:30:12 -08:00
irq-mxs.c ARM: mxs: icoll: Fix interrupts gpio bank 0 2013-06-03 23:18:15 +08:00
irq-renesas-intc-irqpin.c irqchip: intc-irqpin: Add support for shared interrupt lines 2013-03-28 16:39:46 +09:00
irq-renesas-irqc.c irqchip: renesas-irqc: Fix irqc_probe error handling 2014-01-15 15:28:45 -08:00
irq-s3c24xx.c ARM: arm-soc driver changes for 3.10 2013-05-04 12:31:18 -07:00
irq-sirfsoc.c ARM: sirf: move irq driver to drivers/irqchip 2013-03-25 12:29:39 +01:00
irq-sun4i.c irqchip: sunxi: Rename sunxi to sun4i 2013-04-08 21:42:46 +02:00
irq-versatile-fpga.c irqchip: Return -EPERM for reserved IRQs 2013-06-08 21:34:16 +01:00
irq-vic.c irqchip: Return -EPERM for reserved IRQs 2013-06-08 21:34:16 +01:00
irq-vt8500.c irqchip: vt8500: Convert arch-vt8500 to new irqchip infrastructure 2013-04-12 22:43:24 -07: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
Kconfig irqchip: Renesas IRQC driver 2013-03-18 21:26:06 +09:00
Makefile ARM: arm-soc: late cleanups 2013-05-07 11:22:14 -07:00
spear-shirq.c irqchip: spear_shirq: Fix interrupt offset 2014-07-09 11:14:02 -07:00