• Greg Kurz's avatar
    powerpc/pseries: Don't enforce MSI affinity with kdump · f9619d5e
    Greg Kurz authored
    Depending on the number of online CPUs in the original kernel, it is
    likely for CPU #0 to be offline in a kdump kernel. The associated IRQs
    in the affinity mappings provided by irq_create_affinity_masks() are
    thus not started by irq_startup(), as per-design with managed IRQs.
    
    This can be a problem with multi-queue block devices driven by blk-mq :
    such a non-started IRQ is very likely paired with the single queue
    enforced by blk-mq during kdump (see blk_mq_alloc_tag_set()). This
    causes the device to remain silent and likely hangs the guest at
    some point.
    
    This is a regression caused by commit 9ea69a55 ("powerpc/pseries:
    Pass MSI affinity to irq_create_mapping()"). Note that this only happens
    with the XIVE interrupt controller because XICS has a workaround to bypass
    affinity, which is activated during kdump with the "noirqdistrib" kernel
    parameter.
    
    The issue comes from a combination of factors:
    - discrepancy between the number of queues detected by the multi-queue
      block driver, that was used to create the MSI vectors, and the single
      queue mode enforced later on by blk-mq because of kdump (i.e. keeping
      all queues fixes the issue)
    - CPU#0 offline (i.e. kdump always succeed with CPU#0)
    
    Given that I couldn't reproduce on x86, which seems to always have CPU#0
    online even during kdump, I'm not sure where this should be fixed. Hence
    going for another approach : fine-grained affinity is for performance
    and we don't really care about that during kdump. Simply revert to the
    previous working behavior of ignoring affinity masks in this case only.
    
    Fixes: 9ea69a55 ("powerpc/pseries: Pass MSI affinity to irq_create_mapping()")
    Cc: stable@vger.kernel.org # v5.10+
    Signed-off-by: default avatarGreg Kurz <groug@kaod.org>
    Reviewed-by: default avatarLaurent Vivier <lvivier@redhat.com>
    Reviewed-by: default avatarCédric Le Goater <clg@kaod.org>
    Signed-off-by: default avatarMichael Ellerman <mpe@ellerman.id.au>
    Link: https://lore.kernel.org/r/20210215094506.1196119-1-groug@kaod.org
    f9619d5e
msi.c 12.9 KB