Latest commit 8397913 Jul 27, 2017 Thomas Gleixner genirq/cpuhotplug: Revert "Set force affinity flag on hotplug migration"
That commit was part of the changes moving x86 to the generic CPU hotplug
interrupt migration code. The force flag was required on x86 before the
hierarchical irqdomain rework, but invoking set_affinity() with force=true
stayed and had no side effects.

At some point in the past, the force flag got repurposed to support the
exynos timer interrupt affinity setting to a not yet online CPU, so the
interrupt controller callback does not verify the supplied affinity mask
against cpu_online_mask.

Setting the flag in the CPU hotplug code causes the cpu online masking to
be blocked on these irq controllers and results in potentially affining an
interrupt to the CPU which is unplugged, i.e. instead of moving it away,
it's just reassigned to it.

As the force flags is not longer needed on x86, it's safe to revert that
patch so the ARM irqchips which use the force flag work again.

Add comments to that effect, so this won't happen again.

Note: The online mask handling should be done in the generic code and the
force flag and the masking in the irq chips removed all together, but
that's not a change possible for 4.13. 

Fixes: 77f85e6 ("genirq/cpuhotplug: Set force affinity flag on hotplug migration")
Reported-by: Will Deacon <will.deacon@arm.com>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Acked-by: Will Deacon <will.deacon@arm.com>
Cc: Marc Zyngier <marc.zyngier@arm.com>
Cc: Russell King <linux@arm.linux.org.uk>
Cc: LAK <linux-arm-kernel@lists.infradead.org>
Link: http://lkml.kernel.org/r/alpine.DEB.2.20.1707271217590.3109@nanos
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Permalink
..
Failed to load latest commit information.
Kconfig genirq/timings: Add infrastructure to track the interrupt timings Jun 24, 2017
Makefile genirq/timings: Add infrastructure to track the interrupt timings Jun 24, 2017
affinity.c Merge tag 'pci-v4.13-changes' of git://git.kernel.org/pub/scm/linux/k… Jul 8, 2017
autoprobe.c genirq: Add force argument to irq_startup() Jun 22, 2017
chip.c genirq/PM: Properly pretend disabled state when force resuming interr… Jul 17, 2017
cpuhotplug.c genirq/cpuhotplug: Revert "Set force affinity flag on hotplug migration" Jul 27, 2017
debug.h irq: hide debug macros so they don't collide with others. Apr 23, 2012
debugfs.c genirq/debugfs: Remove pointless NULL pointer check Jun 24, 2017
devres.c irq/generic-chip: Provide devm_irq_setup_generic_chip() Jun 21, 2017
dummychip.c Merge branch 'linus' into irq/core Jun 5, 2015
generic-chip.c irq/generic-chip: Export irq_init_generic_chip() locally Jun 21, 2017
handle.c Merge tag 'docs-4.13' of git://git.lwn.net/linux Jul 4, 2017
internals.h
ipi.c genirq: Fix missing irq allocation affinity hint Jul 19, 2016
irqdesc.c Merge branch 'irq-urgent-for-linus' of git://git.kernel.org/pub/scm/l… Jul 9, 2017
irqdomain.c irqdomain: Allow ACPI device nodes to be used as irqdomain identifiers Jul 7, 2017
manage.c genirq: Keep chip buslock across irq_request/release_resources() Jul 12, 2017
migration.c genirq: Provide irq_fixup_move_pending() Jun 22, 2017
msi.c genirq/irqdomain: Remove auto-recursive hierarchy support Jun 22, 2017
pm.c genirq/PM: Properly pretend disabled state when force resuming interr… Jul 17, 2017
proc.c genirq: Introduce effective affinity mask Jun 22, 2017
resend.c genirq: Remove irq argument from irq flow handlers Sep 16, 2015
settings.h genirq: Add flag to force mask in disable_irq[_nosync]() Oct 11, 2015
spurious.c genirq: Clarify logic calculating bogus irqreturn_t values Feb 16, 2017
timings.c genirq/timings: Add infrastructure for estimating the next interrupt … Jun 24, 2017