Messages in this thread |  | | Date | Thu, 07 Jul 2022 13:59:02 +0100 | From | Marc Zyngier <> | Subject | Re: [PATCH V14 14/15] irqchip / ACPI: Introduce ACPI_IRQ_MODEL_LPIC for LoongArch |
| |
On Sun, 03 Jul 2022 09:45:31 +0100, Jianmin Lv <lvjianmin@loongson.cn> wrote: > > For LoongArch, ACPI_IRQ_MODEL_LPIC is introduced, and then the > callback acpi_get_gsi_domain_id and acpi_gsi_to_irq_fallback are > implemented. > > The acpi_get_gsi_domain_id callback returns related fwnode handle > of irqdomain for different GSI range. > > The acpi_gsi_to_irq_fallback will create new mapping for gsi when > the mapping of it is not found. > > Signed-off-by: Jianmin Lv <lvjianmin@loongson.cn> > --- > drivers/acpi/bus.c | 3 +++ > drivers/irqchip/irq-loongarch-cpu.c | 37 +++++++++++++++++++++++++++++++++++++ > include/linux/acpi.h | 1 + > 3 files changed, 41 insertions(+) > > diff --git a/drivers/acpi/bus.c b/drivers/acpi/bus.c > index 86fa61a..63fbf00 100644 > --- a/drivers/acpi/bus.c > +++ b/drivers/acpi/bus.c > @@ -1145,6 +1145,9 @@ static int __init acpi_bus_init_irq(void) > case ACPI_IRQ_MODEL_PLATFORM: > message = "platform specific model"; > break; > + case ACPI_IRQ_MODEL_LPIC: > + message = "LPIC"; > + break; > default: > pr_info("Unknown interrupt routing model\n"); > return -ENODEV; > diff --git a/drivers/irqchip/irq-loongarch-cpu.c b/drivers/irqchip/irq-loongarch-cpu.c > index c2f7411..1b241d7 100644 > --- a/drivers/irqchip/irq-loongarch-cpu.c > +++ b/drivers/irqchip/irq-loongarch-cpu.c > @@ -15,6 +15,41 @@ > > static struct irq_domain *irq_domain; > > +static int lpic_gsi_to_irq(u32 gsi) > +{ > + /* Only pch irqdomain transferring is required for LoongArch. */ > + if (gsi >= GSI_MIN_PCH_IRQ && gsi <= GSI_MAX_PCH_IRQ) > + return acpi_register_gsi(NULL, gsi, ACPI_LEVEL_SENSITIVE, ACPI_ACTIVE_HIGH); > + return -1;
The expected return value on failure is 0 (which indicates that no interrupt was mapped). Here, things will break as acpi_gsi_to_irq() stores the result as unsigned, and compares the result to 0.
M.
-- Without deviation from the norm, progress is not possible.
|  |