linux/drivers/irqchip
Thomas Gleixner 8cc3cfc5cc irqchip: armanda: Sanitize set_irq_affinity()
The set_irq_affinity() function has two issues:

1) It has no protection against selecting an offline cpu from the
   given mask.

2) It pointlessly restricts the affinity masks to have a single cpu
   set. This collides with the irq migration code of arm.

   irq affinity is set to core 3
   core 3 goes offline

   migration code sets mask to cpu_online_mask and calls the
   irq_set_affinity() callback of the irq_chip which fails due to bit
   0,1,2 set.

So instead of doing silly for_each_cpu() loops just pick any bit of
the mask which intersects with the online mask.

Get rid of fiddling with the default_irq_affinity as well.

[ Gregory: Fixed the access to the routing register ]

Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Tested-by: Gregory CLEMENT <gregory.clement@free-electrons.com>
Cc: Jason Cooper <jason@lakedaemon.net>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Ingo Molnar <mingo@elte.hu>
Link: http://lkml.kernel.org/r/20140304203101.088889302@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
2014-04-28 21:27:15 +02:00
..
exynos-combiner.c irqchip: exynos-combiner: call handle_bad_irq directly 2014-02-14 07:27:40 +09:00
irq-armada-370-xp.c irqchip: armanda: Sanitize set_irq_affinity() 2014-04-28 21:27:15 +02:00
irq-bcm2835.c irqchip: Remove asmlinkage from static functions 2014-03-12 13:00:41 +01:00
irq-clps711x.c ARM: clps711x: Add CLPS711X irqchip driver 2014-02-28 17:27:30 +01:00
irq-crossbar.c DRIVERS: IRQCHIP: CROSSBAR: Add support for Crossbar IP 2014-02-05 20:08:34 +05:30
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: Support forced affinity setting 2014-04-17 23:36:28 +02: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 ARM: SoC: cleanups for 3.15 2014-04-05 13:51:19 -07:00
irq-moxart.c irqchip: Remove asmlinkage from static functions 2014-03-12 13:00:41 +01: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 Merge branch 'irq/for-gpio' into irq/core 2014-03-12 16:01:07 +01: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: Remove asmlinkage from static functions 2014-03-12 13:00:41 +01:00
irq-sun4i.c irqchip: sun4i: Simplify sun4i_irq_ack 2014-03-19 12:34:29 +01: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 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: Properly chain the cascaded IRQs 2014-04-15 18:24:24 +02:00
irq-vt8500.c irqchip: Remove asmlinkage from static functions 2014-03-12 13:00:41 +01: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: Remove asmlinkage from static functions 2014-03-12 13:00:41 +01:00
irqchip.c irqchip: Remove unused include 2014-03-12 13:12:04 +01:00
irqchip.h irqchip: add basic infrastructure 2013-01-10 11:44:38 -06:00
Kconfig ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
Makefile ARM: SoC: driver changes 2014-04-05 15:37:40 -07:00
spear-shirq.c Shiraz has moved 2014-04-18 16:40:08 -07:00