• Thomas Gleixner's avatar
    x86/msi: Force affinity setup before startup · ff363f48
    Thomas Gleixner authored
    The X86 MSI mechanism cannot handle interrupt affinity changes safely after
    startup other than from an interrupt handler, unless interrupt remapping is
    enabled. The startup sequence in the generic interrupt code violates that
    assumption.
    
    Mark the irq chips with the new IRQCHIP_AFFINITY_PRE_STARTUP flag so that
    the default interrupt setting happens before the interrupt is started up
    for the first time.
    
    While the interrupt remapping MSI chip does not require this, there is no
    point in treating it differently as this might spare an interrupt to a CPU
    which is not in the default affinity mask.
    
    For the non-remapping case go to the direct write path when the interrupt
    is not yet started similar to the not yet activated case.
    
    Fixes: 18404756 ("genirq: Expose default irq affinity mask (take 3)")
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Tested-by: default avatarMarc Zyngier <maz@kernel.org>
    Reviewed-by: default avatarMarc Zyngier <maz@kernel.org>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20210729222542.886722080@linutronix.de
    
    ff363f48
msi.c 9.82 KB