[PATCH 3/3] irqchip/gic-v3: Don't register a redistributor that was never counted

Marc Zyngier maz at kernel.org
Thu Sep 24 10:29:28 PDT 2026


On Thu, 24 Sep 2026 17:15:14 +0100,
Fuad Tabba <fuad.tabba at linux.dev> wrote:
> 
> gic_acpi_match_gicc() counts only the enabled GICCs with a non-zero
> gicr_base_address, and that count sizes redist_regs[], but
> gic_acpi_parse_madt_gicc() registers every enabled one. For an enabled
> GICC with a zero GICR base, gic_acpi_register_redist() therefore writes
> a struct redist_region past the end of the array.
> 
> Commit fa2dabe57220e ("irqchip/gic-v3: Don't return errors from
> gic_acpi_match_gicc()") removed the check that kept the two consistent;
> its message says such entries are still caught by gic_populate_rdist(),
> but that runs from gic_cpu_init(), after the write. Skip the entry
> instead.
> 
> Fixes: fa2dabe57220e ("irqchip/gic-v3: Don't return errors from gic_acpi_match_gicc()")
> Signed-off-by: Fuad Tabba <fuad.tabba at linux.dev>
> ---
>  drivers/irqchip/irq-gic-v3.c | 6 ++++++
>  1 file changed, 6 insertions(+)
> 
> diff --git a/drivers/irqchip/irq-gic-v3.c b/drivers/irqchip/irq-gic-v3.c
> index 6e1fa5b247fc4..fb6a0570fb154 100644
> --- a/drivers/irqchip/irq-gic-v3.c
> +++ b/drivers/irqchip/irq-gic-v3.c
> @@ -2344,6 +2344,12 @@ gic_acpi_parse_madt_gicc(union acpi_subtable_headers *header,
>  		return 0;
>  	}
>  
> +	/* Not counted by gic_acpi_match_gicc(), so there is no slot for it */
> +	if (!gicc->gicr_base_address) {
> +		pr_warn(FW_BUG "GICC entry with ACPI UID %u has no GICR base address\n", gicc->uid);
> +		return 0;
> +	}
> +

Shouldn't this also update the broken_rdist bitmap?

	M.

-- 
Without deviation from the norm, progress is not possible.



More information about the linux-arm-kernel mailing list