• Heiko Carstens's avatar
    s390/smp: lost IPIs on cpu hotplug · 9acf73b7
    Heiko Carstens authored
    IPIs might be lost when a cpu gets brought offline:
    
    When stop_machine executes its state machine there is a race window
    for the state STOPMACHINE_DISABLE_IRQ where the to be brought offline
    cpu might already have irqs disabled but a different cpu still may
    have irqs enabled.
    If the enabled cpu receives an interrupt and as a result sends an IPI
    to the to be offlined cpu in its bottom halve context, the IPI won't
    be noticed before the cpu is offline.
    
    In fact the race window is much larger since there is no guarantee
    when an IPI will be received.
    
    To fix this check for enqueued but not yet received IPIs in the
    cpu_disable() path and call the respective handlers before the cpu
    is marked offline.
    Reported-by: default avatarJuergen Doelle <juergen.doelle@de.ibm.com>
    Signed-off-by: default avatarHeiko Carstens <heiko.carstens@de.ibm.com>
    Signed-off-by: default avatarMartin Schwidefsky <schwidefsky@de.ibm.com>
    9acf73b7
smp.c 26.3 KB