mirror of
https://github.com/torvalds/linux.git
synced 2024-11-23 20:51:44 +00:00
8cc3cfc5cc
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> |
||
---|---|---|
.. | ||
exynos-combiner.c | ||
irq-armada-370-xp.c | ||
irq-bcm2835.c | ||
irq-clps711x.c | ||
irq-crossbar.c | ||
irq-dw-apb-ictl.c | ||
irq-gic.c | ||
irq-imgpdc.c | ||
irq-metag-ext.c | ||
irq-metag.c | ||
irq-mmp.c | ||
irq-moxart.c | ||
irq-mxs.c | ||
irq-nvic.c | ||
irq-orion.c | ||
irq-renesas-intc-irqpin.c | ||
irq-renesas-irqc.c | ||
irq-s3c24xx.c | ||
irq-sirfsoc.c | ||
irq-sun4i.c | ||
irq-sunxi-nmi.c | ||
irq-tb10x.c | ||
irq-versatile-fpga.c | ||
irq-vic.c | ||
irq-vt8500.c | ||
irq-xtensa-mx.c | ||
irq-xtensa-pic.c | ||
irq-zevio.c | ||
irqchip.c | ||
irqchip.h | ||
Kconfig | ||
Makefile | ||
spear-shirq.c |