Grzegorz Jaszczyk
758e836675
irqchip: armada-370-xp: Fix MPIC interrupt handling
...
In both Armada-375 and Armada-38x MPIC interrupts should be identified by
reading cause register multiplied by the interrupt mask.
A lack of above mentioned multiplication resulted in a bug, caused by the
fact that in Armada-375 and Armada-38x some of the interrupts
(e.g. network interrupts) can be handled either as a GIC or MPIC interrupts.
Therefore during MPIC interrupts handling, cause register shows hits from
interrupts even if they are masked for MPIC but unmasked for a GIC.
This resulted in 'bad IRQ' error, because masked MPIC interrupt without
registered interrupt handler, was trying to be handled during interrupt
handling procedure of some other unmasked MPIC interrupt (e.g. local timer
irq).
This commit fixes that by ensuring that during MPIC interrupt handling only
interrupts that are unmasked for MPIC are processed.
Signed-off-by: Grzegorz Jaszczyk <jaz@semihalf.com>
Reviewed-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Fixes: bc69b8adfe ("irqchip: armada-370-xp: Setup a chained handler for the MPIC")
Cc: <stable@vger.kernel.org> # v3.15+
Acked-by: Ezequiel Garcia <ezequiel.garcia@free-electrons.com>
Link: https://lkml.kernel.org/r/1411643839-64925-3-git-send-email-jaz@semihalf.com
Signed-off-by: Jason Cooper <jason@lakedaemon.net>
2014-11-02 01:31:10 +00:00
..
exynos-combiner.c
irqchip: exynos-combiner: Fix compilation error on ARM64
2014-09-03 11:56:39 +00:00
irq-armada-370-xp.c
irqchip: armada-370-xp: Fix MPIC interrupt handling
2014-11-02 01:31:10 +00:00
irq-atmel-aic-common.c
irqchip: atmel-aic: Implement RTC irq fixup
2014-07-17 13:38:54 +00:00
irq-atmel-aic-common.h
irqchip: atmel-aic: Implement RTC irq fixup
2014-07-17 13:38:54 +00:00
irq-atmel-aic.c
irqchip: atmel-aic: Convert to handle_domain_irq
2014-09-03 13:10:51 +00:00
irq-atmel-aic5.c
Merge branch 'irqchip/atmel' into irqchip/core
2014-10-02 13:03:48 +00:00
irq-bcm2835.c
irqchip: Remove asmlinkage from static functions
2014-03-12 13:00:41 +01:00
irq-bcm7120-l2.c
irqchip: bcm7120-l2: Add Broadcom BCM7120-style Level 2 interrupt controller
2014-09-14 06:20:14 +00:00
irq-brcmstb-l2.c
irqchip: brcmstb-l2: Level-2 interrupts are edge sensitive
2014-06-21 02:08:34 +00:00
irq-clps711x.c
irqchip: clps711x: Convert to handle_domain_irq
2014-09-03 13:10:32 +00:00
irq-crossbar.c
irqchip: crossbar: Off by one bugs in init
2014-08-18 11:48:11 +00:00
irq-dw-apb-ictl.c
irqchip: add DesignWare APB ICTL interrupt controller
2013-12-13 16:29:40 +01:00
irq-gic-common.c
irqchip: gic: Replace hex numbers with defines.
2014-08-19 15:07:46 +00:00
irq-gic-common.h
irqchip: gic: Move some bits of GICv2 to a library-type file
2014-07-08 21:49:14 +00:00
irq-gic-v3.c
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-09 06:42:04 -04:00
irq-gic.c
Merge branch 'for-3.18-consistent-ops' of git://git.kernel.org/pub/scm/linux/kernel/git/tj/percpu
2014-10-15 07:48:18 +02:00
irq-hip04.c
irqchip: hip04: Enable Hisilicon HiP04 interrupt controller
2014-08-20 12:25:49 +00:00
irq-imgpdc.c
irq-imgpdc: add ImgTec PDC irqchip driver
2013-08-21 14:17:56 +01:00
irq-keystone.c
irqchip: keystone: Remove warning unsigned 'kirq->irq' is never less than zero
2014-09-03 11:48:44 +00: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: Convert to handle_domain_irq
2014-09-03 13:10:34 +00:00
irq-moxart.c
irqchip: Remove asmlinkage from static functions
2014-03-12 13:00:41 +01:00
irq-mxs.c
irqchip: mxs: Convert to handle_domain_irq
2014-09-03 13:10:35 +00:00
irq-nvic.c
irqchip: nvic: Use the generic noop function
2014-06-21 02:12:42 +00:00
irq-omap-intc.c
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-09 06:42:04 -04:00
irq-or1k-pic.c
irqchip: or1k-pic: Convert to handle_domain_irq
2014-09-03 13:10:54 +00:00
irq-orion.c
irqchip: orion: Convert to handle_domain_irq
2014-09-03 13:10:37 +00:00
irq-renesas-intc-irqpin.c
irqchip: renesas-intc-irqpin: Add minimal runtime PM support
2014-09-14 06:47:40 +00:00
irq-renesas-irqc.c
irqchip: renesas-irqc: Enable mask on suspend
2014-01-22 21:48:55 +01:00
irq-s3c24xx.c
irqchip: s3c24xx: Convert to handle_domain_irq
2014-09-03 13:10:38 +00:00
irq-sirfsoc.c
irqchip: sirfsoc: Convert to handle_domain_irq
2014-09-03 13:10:40 +00:00
irq-sun4i.c
irqchip: sun4i: Convert to handle_domain_irq
2014-09-03 13:10:42 +00:00
irq-sunxi-nmi.c
irqchip: sun7i/sun6i: Disable NMI before registering the handler
2014-03-31 11:12:57 +02:00
irq-tb10x.c
irq-versatile-fpga.c
irqchip: versatile-fpga: Convert to handle_domain_irq
2014-09-03 13:10:43 +00:00
irq-vic.c
irqchip: vic: Convert to handle_domain_irq
2014-09-03 13:10:45 +00:00
irq-vt8500.c
irqchip: vt8500: Convert to handle_domain_irq
2014-09-03 13:10:46 +00:00
irq-xtensa-mx.c
irqchip: xtensa: Select only an online cpu
2014-03-04 17:37:55 +01: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: zevio: Convert to handle_domain_irq
2014-09-03 13:10:48 +00:00
irqchip.c
irqchip: align irqchip OF match table section naming
2014-05-20 14:24:40 -05:00
irqchip.h
of: consolidate linker section OF match table declarations
2014-05-20 14:25:24 -05:00
Kconfig
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-09 06:42:04 -04:00
Makefile
Merge branch 'irq-core-for-linus' of git://git.kernel.org/pub/scm/linux/kernel/git/tip/tip
2014-10-09 06:42:04 -04:00
spear-shirq.c
irqchip: spear_shirq: Simplify register access code
2014-06-24 12:38:45 +00:00