diff options
| author | Lyrix liu <[email protected]> | 2026-05-22 16:06:22 +0800 |
|---|---|---|
| committer | Fabio Estevam <[email protected]> | 2026-06-05 08:59:01 -0300 |
| commit | 2d47fbc31d3db4d43d9c9b33432e9ef04d33bf0c (patch) | |
| tree | 6ec4f8a19b327f7b2bd026dfb6f27a1d4f2b1b61 /arch/arm/lib | |
| parent | 35c47a1eab776625d9a7454bac7f7615ee4c2582 (diff) | |
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 <[email protected]>
Signed-off-by: Ye Li <[email protected]>
Diffstat (limited to 'arch/arm/lib')
| -rw-r--r-- | arch/arm/lib/gic-v3-its.c | 3 |
1 files changed, 2 insertions, 1 deletions
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); |
