[rtems commit] bsp/imx: Fix SMP start

Sebastian Huber sebh at rtems.org
Fri Jul 9 09:15:13 UTC 2021


Module:    rtems
Branch:    master
Commit:    7b2d5699be47e6847e8880ab3956024ae3aaaed7
Changeset: http://git.rtems.org/rtems/commit/?id=7b2d5699be47e6847e8880ab3956024ae3aaaed7

Author:    Sebastian Huber <sebastian.huber at embedded-brains.de>
Date:      Fri Jul  9 10:39:01 2021 +0200

bsp/imx: Fix SMP start

Flush imx_gic_dist_base so that secondary processors can use the right
address.

---

 bsps/arm/imx/start/bspstart.c | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/bsps/arm/imx/start/bspstart.c b/bsps/arm/imx/start/bspstart.c
index 238bc2b..2f59f95 100644
--- a/bsps/arm/imx/start/bspstart.c
+++ b/bsps/arm/imx/start/bspstart.c
@@ -153,6 +153,18 @@ static void imx_find_gic(const void *fdt)
     node = fdt_path_offset(fdt, "/soc/interrupt-controller");
   }
   imx_gic_dist_base = (uintptr_t) imx_get_reg_of_node(fdt, node);
+
+#if defined(RTEMS_SMP)
+  /*
+   * Secondary processors start with a disabled data cache and use the GIC to
+   * deterine if they can continue the initialization, see
+   * arm_gic_irq_initialize_secondary_cpu().
+   */
+  rtems_cache_flush_multiple_data_lines(
+    &imx_gic_dist_base,
+    sizeof(imx_gic_dist_base)
+  );
+#endif
 }
 
 void bsp_start(void)



More information about the vc mailing list