linux-imx/include
Thomas Gleixner d12167320f genirq: Allow forcing cpu affinity of interrupts
commit 01f8fa4f01 upstream.

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.

We have a yet unused argument in the set_affinity callbacks of the irq
chips, which I added back then for a similar reason. It was never
required so it got not used. But I'm happy that I never removed it.

That allows us to implement a sane handling of the above scenario. So
the affected SoC drivers can add the required force handling to their
interrupt chip, switch the timer code to irq_force_affinity() and
things just work.

This does not affect any existing user of irq_set_affinity().

Tagged for stable to allow a simple fix of the affected SoC clock
event drivers.

Reported-and-tested-by: Krzysztof Kozlowski <k.kozlowski@samsung.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Cc: Kyungmin Park <kyungmin.park@samsung.com>
Cc: Marek Szyprowski <m.szyprowski@samsung.com>
Cc: Bartlomiej Zolnierkiewicz <b.zolnierkie@samsung.com>
Cc: Tomasz Figa <t.figa@samsung.com>,
Cc: Daniel Lezcano <daniel.lezcano@linaro.org>,
Cc: Kukjin Kim <kgene.kim@samsung.com>
Cc: linux-arm-kernel@lists.infradead.org,
Link: http://lkml.kernel.org/r/20140416143315.717251504@linutronix.de
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Signed-off-by: Jiri Slaby <jslaby@suse.cz>
2014-06-06 11:40:20 +02:00
..
acpi ACPIPHP / radeon / nouveau: Fix VGA switcheroo problem related to hotplug 2014-01-09 12:25:16 -08:00
asm-generic mm: use paravirt friendly ops for NUMA hinting ptes 2014-05-29 11:38:15 +02:00
clocksource ARM: SoC cleanups for 3.12 2013-09-06 13:21:16 -07:00
crypto crypto: scatterwalk - Use sg_chain_ptr on chain entries 2013-12-11 22:37:56 -08:00
drm drm: add drm_set_preferred_mode 2014-04-18 11:05:05 +02:00
dt-bindings ARM: dts: Fix pinctrl mask for omap3 2013-10-08 10:37:29 -07:00
keys
kvm ARM: KVM: vgic: Bump VGIC_NR_IRQS to 256 2013-08-30 16:12:39 +03:00
linux genirq: Allow forcing cpu affinity of interrupts 2014-06-06 11:40:20 +02:00
math-emu
media Merge git://git.kernel.org/pub/scm/linux/kernel/git/davem/net-next 2013-09-05 14:54:29 -07:00
memory
misc
net vsock: Make transport the proto owner 2014-05-29 11:49:26 +02:00
pcmcia
ras
rdma Merge branches 'cxgb4', 'flowsteer', 'ipoib', 'iser', 'mlx4', 'ocrdma' and 'qib' into for-next 2013-09-03 09:01:08 -07:00
rxrpc
scsi scsi: fix our current target reap infrastructure 2014-05-29 11:38:05 +02:00
sound ALSA: memalloc.h - fix wrong truncation of dma_addr_t 2013-12-20 07:48:50 -08:00
target iscsi/iser-target: Fix isert_conn->state hung shutdown issues 2014-03-22 22:01:58 +01:00
trace blktrace: fix accounting of partially completed requests 2014-05-29 11:38:08 +02:00
uapi xattr: guard against simultaneous glibc header inclusion 2014-05-15 09:55:38 +02:00
video fbdev changes for 3.12: 2013-09-05 09:49:32 -07:00
xen xen/pvhvm: If xen_platform_pci=0 is set don't blow up (v4). 2014-02-13 13:50:10 -08:00
Kbuild