Re: [PATCH 3/3] irqchip/gic-v3: Don't register a redistributor that was never counted
From: Marc Zyngier
Date: Thu Sep 24 2026 - 13:50:46 EST
On Thu, 24 Sep 2026 17:15:14 +0100,
Fuad Tabba <fuad.tabba@xxxxxxxxx> 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@xxxxxxxxx>
> ---
> 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.