From: Lyrix liu Date: Fri, 22 May 2026 08:06:22 +0000 (+0800) Subject: arm: gic-v3-its: Fix LPI pending table size calculation X-Git-Url: http://git.ipfire.org/gitweb/index.cgi?a=commitdiff_plain;h=2d47fbc31d3db4d43d9c9b33432e9ef04d33bf0c;p=thirdparty%2Fu-boot.git arm: gic-v3-its: Fix LPI pending table size calculation The variable `pend_tab_total_sz` is calculated using the macro `LPI_PENDBASE_SZ`, which depends on the global variable `lpi_id_bits`. However, `lpi_id_bits` is initialized later in the function based on the GICD_TYPER register. This results in `pend_tab_total_sz` being calculated with an uninitialized `lpi_id_bits` value (0), This leads to the LPI pending tables being mapped with an incorrect size. Fixes: 60b9b47d295b ("Revert "arch: arm: use dt and UCLASS_SYSCON to get gic lpi details"") Signed-off-by: Lyrix liu Signed-off-by: Ye Li --- diff --git a/arch/arm/lib/gic-v3-its.c b/arch/arm/lib/gic-v3-its.c index 34f05e94672..d11a1ea436e 100644 --- a/arch/arm/lib/gic-v3-its.c +++ b/arch/arm/lib/gic-v3-its.c @@ -81,7 +81,7 @@ int gic_lpi_tables_init(u64 base, u32 num_redist) int i; u64 redist_lpi_base; u64 pend_base; - ulong pend_tab_total_sz = num_redist * LPI_PENDBASE_SZ; + ulong pend_tab_total_sz; void *pend_tab_va; if (gic_v3_its_get_gic_addr(&priv)) @@ -133,6 +133,7 @@ int gic_lpi_tables_init(u64 base, u32 num_redist) } redist_lpi_base = base + LPI_PROPBASE_SZ; + pend_tab_total_sz = num_redist * LPI_PENDBASE_SZ; pend_tab_va = map_physmem(redist_lpi_base, pend_tab_total_sz, MAP_NOCACHE); memset(pend_tab_va, 0, pend_tab_total_sz);