board: lx2160a: Add check in GIC RD tables init
authorHou Zhiqiang <Zhiqiang.Hou@nxp.com>
Tue, 28 Apr 2020 02:19:29 +0000 (10:19 +0800)
committerPriyanka Jain <priyanka.jain@nxp.com>
Tue, 28 Apr 2020 12:16:46 +0000 (17:46 +0530)
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>
board/freescale/lx2160a/lx2160a.c

index 23ea1b6f16aa31cb84708421c9db25da3152bf27..eafd53076344300ce4a8109ad2155fad818cd379 100644 (file)
@@ -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