On śro, 2014-04-16 at 14:36 +0000, Thomas Gleixner wrote: > The current implementation of irq_set_affinity() refuses rightfully to > route an interrupt to an offline cpu. > > But there is a special case, where this is actually desired. Some of > the ARM SoCs have per cpu timers which require setting the affinity > during cpu startup where the cpu is not yet in the online mask. > > If we can't do that, then the local timer interrupt for the about to > become online cpu is routed to some random online cpu. > > The developers of the affected machines tried to work around that > issue, but that results in a massive mess in that timer code. > > It's saner to provide a facility to force the affinity and make the > affected machines use that. > > The following series implements that logic w/o impact on any existing > users. > > The change to the genirq core code is not that bad: > > arch/mips/cavium-octeon/octeon-irq.c | 2 +- > include/linux/interrupt.h | 35 ++++++++++++++++++++++++++++++++++- > include/linux/irq.h | 3 ++- > kernel/irq/manage.c | 17 ++++++----------- > 4 files changed, 43 insertions(+), 14 deletions(-) > > The resulting fixup for gic/exynos_mct is: > > clocksource/exynos_mct.c | 12 +++--------- > irqchip/irq-gic.c | 8 ++++++-- > 2 files changed, 9 insertions(+), 11 deletions(-) > > Krzysztofs proposed workaround was slightly smaller than that, but I > prefer having a clean solution for backporting to stable rather than a > messy hack around which works. > > @Krzysztof: Can you please retest the series? I've changed the core > implementation versus the first attempt to make it less intrusive. Works fine. Tested whole patchset on board with Exynos 3250. Best regards, Krzysztof -- To unsubscribe from this list: send the line "unsubscribe stable" in the body of a message to majordomo@xxxxxxxxxxxxxxx More majordomo info at http://vger.kernel.org/majordomo-info.html