]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
irqchip/gic-v3-its: Restore quirk probing for ACPI-based systems
authorMarc Zyngier <maz@kernel.org>
Tue, 13 Feb 2024 10:12:05 +0000 (10:12 +0000)
committerThomas Gleixner <tglx@linutronix.de>
Tue, 13 Feb 2024 10:29:52 +0000 (11:29 +0100)
While refactoring the way the ITSs are probed, the handling of quirks
applicable to ACPI-based platforms was lost. As a result, systems such as
HIP07 lose their GICv4 functionnality, and some other may even fail to
boot, unless they are configured to boot with DT.

Move the enabling of quirks into its_probe_one(), making it common to all
firmware implementations.

Fixes: 9585a495ac93 ("irqchip/gic-v3-its: Split allocation from initialisation of its_node")
Signed-off-by: Marc Zyngier <maz@kernel.org>
Signed-off-by: Thomas Gleixner <tglx@linutronix.de>
Reviewed-by: Lorenzo Pieralisi <lpieralisi@kernel.org>
Reviewed-by: Zenghui Yu <yuzenghui@huawei.com>
Cc: stable@vger.kernel.org
Link: https://lore.kernel.org/r/20240213101206.2137483-3-maz@kernel.org
drivers/irqchip/irq-gic-v3-its.c

index fec1b58470df034483dae845fc28a4d2e433ff06..250b4562f308a8e743d7572e17f21f2362d8db7a 100644 (file)
@@ -5091,6 +5091,8 @@ static int __init its_probe_one(struct its_node *its)
        u32 ctlr;
        int err;
 
+       its_enable_quirks(its);
+
        if (is_v4(its)) {
                if (!(its->typer & GITS_TYPER_VMOVP)) {
                        err = its_compute_its_list_map(its);
@@ -5442,7 +5444,6 @@ static int __init its_of_probe(struct device_node *node)
                if (!its)
                        return -ENOMEM;
 
-               its_enable_quirks(its);
                err = its_probe_one(its);
                if (err)  {
                        its_node_destroy(its);