• Jianmin Lv's avatar
    irqchip/loongson-pch-pic: Fix pch_pic_acpi_init calling · 48ce2d72
    Jianmin Lv authored
    For dual-bridges scenario, pch_pic_acpi_init() will be called
    in following path:
    
    cpuintc_acpi_init
      acpi_cascade_irqdomain_init(in cpuintc driver)
        acpi_table_parse_madt
          eiointc_parse_madt
            eiointc_acpi_init /* this will be called two times
                                 correspondingto parsing two
                                 eiointc entries in MADT under
                                 dual-bridges scenario*/
              acpi_cascade_irqdomain_init(in eiointc driver)
                acpi_table_parse_madt
                  pch_pic_parse_madt
                    pch_pic_acpi_init /* this will be called depend
                                         on valid parent IRQ domain
                                         handle for one or two times
                                         corresponding to parsing
                                         two pchpic entries in MADT
                                         druring calling
                                         eiointc_acpi_init() under
                                         dual-bridges scenario*/
    
    During the first eiointc_acpi_init() calling, the
    pch_pic_acpi_init() will be called just one time since only
    one valid parent IRQ domain handle will be found for current
    eiointc IRQ domain.
    
    During the second eiointc_acpi_init() calling, the
    pch_pic_acpi_init() will be called two times since two valid
    parent IRQ domain handles will be found. So in pch_pic_acpi_init(),
    we must have a reasonable way to prevent from creating second same
    pch_pic IRQ domain.
    
    The patch matches gsi base information in created pch_pic IRQ
    domains to check if the target domain has been created to avoid the
    bug mentioned above.
    
    Cc: stable@vger.kernel.org
    Signed-off-by: default avatarJianmin Lv <lvjianmin@loongson.cn>
    Signed-off-by: default avatarMarc Zyngier <maz@kernel.org>
    Link: https://lore.kernel.org/r/20230407083453.6305-6-lvjianmin@loongson.cn
    48ce2d72
irq-loongson-pch-pic.c 10.3 KB