• Dongli Zhang's avatar
    genirq/cpuhotplug: Retry with cpu_online_mask when migration fails · 88d724e2
    Dongli Zhang authored
    When a CPU goes offline, the interrupts affine to that CPU are
    re-configured.
    
    Managed interrupts undergo either migration to other CPUs or shutdown if
    all CPUs listed in the affinity are offline. The migration of managed
    interrupts is guaranteed on x86 because there are interrupt vectors
    reserved.
    
    Regular interrupts are migrated to a still online CPU in the affinity mask
    or if there is no online CPU to any online CPU.
    
    This works as long as the still online CPUs in the affinity mask have
    interrupt vectors available, but in case that none of those CPUs has a
    vector available the migration fails and the device interrupt becomes
    stale.
    
    This is not any different from the case where the affinity mask does not
    contain any online CPU, but there is no fallback operation for this.
    
    Instead of giving up, retry the migration attempt with the online CPU mask
    if the interrupt is not managed, as managed interrupts cannot be affected
    by this problem.
    Signed-off-by: default avatarDongli Zhang <dongli.zhang@oracle.com>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Link: https://lore.kernel.org/r/20240423073413.79625-1-dongli.zhang@oracle.com
    88d724e2
cpuhotplug.c 7.27 KB