mirror of
https://source.denx.de/u-boot/u-boot.git
synced 2026-06-13 15:03:58 +03:00
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: 60b9b47d29 ("Revert "arch: arm: use dt and UCLASS_SYSCON to get gic lpi details"")
Signed-off-by: Lyrix liu <lyrix.liu@nxp.com>
Signed-off-by: Ye Li <ye.li@nxp.com>
This commit is contained in:
@@ -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);
|
||||
|
||||
Reference in New Issue
Block a user