aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorHou Zhiqiang <Zhiqiang.Hou@nxp.com>2020-04-28 10:19:29 +0800
committerPriyanka Jain <priyanka.jain@nxp.com>2020-04-28 17:46:46 +0530
commitdf32ce2dbe628f8dd7f153e3b43211329d130e17 (patch)
tree12839204d1077e31d3a7e7fc060df42f7128a9e6
parent6ebd48835f2d9f6f70118c77493fdb597b95a40e (diff)
downloadu-boot-df32ce2dbe628f8dd7f153e3b43211329d130e17.zip
u-boot-df32ce2dbe628f8dd7f153e3b43211329d130e17.tar.gz
u-boot-df32ce2dbe628f8dd7f153e3b43211329d130e17.tar.bz2
board: lx2160a: Add check in GIC RD tables init
Program the GIC redistributor tables only when succeeded to reserve memory for them, otherwise kernel will lose the chance to program them using allocated memory. Signed-off-by: Hou Zhiqiang <Zhiqiang.Hou@nxp.com> Reviewed-by: Wasim Khan <wasim.khan@nxp.com> Signed-off-by: Priyanka Jain <priyanka.jain@nxp.com>
-rw-r--r--board/freescale/lx2160a/lx2160a.c10
1 files changed, 7 insertions, 3 deletions
diff --git a/board/freescale/lx2160a/lx2160a.c b/board/freescale/lx2160a/lx2160a.c
index 23ea1b6..eafd530 100644
--- a/board/freescale/lx2160a/lx2160a.c
+++ b/board/freescale/lx2160a/lx2160a.c
@@ -645,7 +645,7 @@ void board_quiesce_devices(void)
#endif
#ifdef CONFIG_GIC_V3_ITS
-void fdt_fixup_gic_lpi_memory(void *blob, u64 gic_lpi_base)
+int fdt_fixup_gic_lpi_memory(void *blob, u64 gic_lpi_base)
{
u32 phandle;
int err;
@@ -656,6 +656,8 @@ void fdt_fixup_gic_lpi_memory(void *blob, u64 gic_lpi_base)
err = fdtdec_add_reserved_memory(blob, "gic-lpi", &gic_lpi, &phandle);
if (err < 0)
debug("failed to add reserved memory: %d\n", err);
+
+ return err;
}
#endif
@@ -671,6 +673,7 @@ int ft_board_setup(void *blob, bd_t *bd)
u64 mc_memory_size = 0;
u16 total_memory_banks;
u64 __maybe_unused gic_lpi_base;
+ int ret;
ft_cpu_setup(blob, bd);
@@ -692,8 +695,9 @@ int ft_board_setup(void *blob, bd_t *bd)
#ifdef CONFIG_GIC_V3_ITS
gic_lpi_base = gd->arch.resv_ram - GIC_LPI_SIZE;
- gic_lpi_tables_init(gic_lpi_base, cpu_numcores());
- fdt_fixup_gic_lpi_memory(blob, gic_lpi_base);
+ ret = fdt_fixup_gic_lpi_memory(blob, gic_lpi_base);
+ if (!ret && gic_lpi_tables_init(gic_lpi_base, cpu_numcores()))
+ debug("%s: failed to init gic-lpi-tables\n", __func__);
#endif
#ifdef CONFIG_RESV_RAM