• Thomas Gleixner's avatar
    genirq/cpuhotplug: Revert "Set force affinity flag on hotplug migration" · 83979133
    Thomas Gleixner authored
    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: 77f85e66 ("genirq/cpuhotplug: Set force affinity flag on hotplug migration")
    Reported-by: default avatarWill Deacon <will.deacon@arm.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Acked-by: default avatarWill 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@nanosSigned-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    83979133
cpuhotplug.c 5.16 KB