• Huacai Chen's avatar
    irqchip/loongson-eiointc: Use early_cpu_to_node() instead of cpu_to_node() · 2d64eaee
    Huacai Chen authored
    Multi-bridge machines required that all eiointc controllers in the system
    are initialized, otherwise the system does not boot.
    
    The initialization happens on the boot CPU during early boot and relies on
    cpu_to_node() for identifying the individual nodes.
    
    That works when the number of possible CPUs is large enough, but with a
    command line limit, e.g. "nr_cpus=$N" for kdump, but fails when the CPUs
    of the secondary nodes are not covered.
    
    During early ACPI enumeration all CPU to node mappings are recorded up to
    CONFIG_NR_CPUS. These are accessible via early_cpu_to_node() even in the
    case that "nr_cpus=N" truncates the number of possible CPUs and only
    provides the possible CPUs via cpu_to_node() translation.
    
    Change the node lookup in the driver to use early_cpu_to_node() so that
    even with a limitation on the number of possible CPUs all eointc instances
    are initialized.
    
    This can't obviously cure the case where CONFIG_NR_CPUS is too small.
    
    [ tglx: Massaged changelog ]
    
    Fixes: 64cc451e ("irqchip/loongson-eiointc: Fix incorrect use of acpi_get_vec_parent")
    Signed-off-by: default avatarHuacai Chen <chenhuacai@loongson.cn>
    Signed-off-by: default avatarThomas Gleixner <tglx@linutronix.de>
    Cc: stable@vger.kernel.org
    Link: https://lore.kernel.org/r/20240623034113.1808727-1-chenhuacai@loongson.cn
    2d64eaee
irq-loongson-eiointc.c 11.7 KB