https://github.com/torvalds/linux
Revision 8cc3cfc5ccf1680b7c88f874912b6bec2797b76b authored by Thomas Gleixner on 04 March 2014, 20:43:41 UTC, committed by Thomas Gleixner on 28 April 2014, 19:27:15 UTC
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>

1 parent 62a08ae
History
Tip revision: 8cc3cfc5ccf1680b7c88f874912b6bec2797b76b authored by Thomas Gleixner on 04 March 2014, 20:43:41 UTC
irqchip: armanda: Sanitize set_irq_affinity()
Tip revision: 8cc3cfc
File Mode Size
Kconfig -rw-r--r-- 3.4 KB
Makefile -rw-r--r-- 635 bytes
font_10x18.c -rw-r--r-- 140.6 KB
font_6x11.c -rw-r--r-- 66.6 KB
font_7x14.c -rw-r--r-- 79.1 KB
font_8x16.c -rw-r--r-- 93.7 KB
font_8x8.c -rw-r--r-- 49.7 KB
font_acorn_8x8.c -rw-r--r-- 15.7 KB
font_mini_4x6.c -rw-r--r-- 54.6 KB
font_pearl_8x8.c -rw-r--r-- 54.4 KB
font_sun12x22.c -rw-r--r-- 181.5 KB
font_sun8x16.c -rw-r--r-- 22.1 KB
fonts.c -rw-r--r-- 2.9 KB

back to top