[U-Boot] [PATCH v5] arm: socfpga: fix U-Boot running from fpga OnChip RAM

Simon Goldschmidt simon.k.r.goldschmidt at gmail.com
Thu Aug 16 07:38:10 UTC 2018


gd->env_addr points to pre-relocation address even after
relocation. This leads to an abort in env_callback_init
when loading the environment.

Fix this by enabling CONFIG_SYS_EXTRA_ENV_RELOC.

Signed-off-by: Simon Goldschmidt <simon.k.r.goldschmidt at gmail.com>
---

Changes in v5:
Improve comments

Changes in v4:
enable this fix for all socfpga, not for gen5 only

Changes in v3:
this patch is new in v3

Changes in v2:
None

 include/configs/socfpga_common.h | 12 ++++++++++++
 1 file changed, 12 insertions(+)

diff --git a/include/configs/socfpga_common.h b/include/configs/socfpga_common.h
index 8ebf6b85fe..8b9f0427c0 100644
--- a/include/configs/socfpga_common.h
+++ b/include/configs/socfpga_common.h
@@ -284,6 +284,18 @@ unsigned int cm_get_qspi_controller_clk_hz(void);
 #define CONFIG_SPL_STACK		CONFIG_SYS_SPL_MALLOC_START
 #endif
 
+/*
+ * When U-Boot is started from FPGA, prevent gd->env_addr to point into
+ * FPGA OnChip RAM after relocation
+ */
+#define CONFIG_SYS_EXTRA_ENV_RELOC
+/*
+ * CONFIG_SYS_EXTRA_ENV_RELOC code needs this to calculate the relocation
+ * offset for gd->env_addr. Since this is based on gd->relocaddr, we need
+ * to use CONFIG_SYS_TEXT_BASE here.
+ */
+#define CONFIG_SYS_MONITOR_BASE	CONFIG_SYS_TEXT_BASE
+
 /* Extra Environment */
 #ifndef CONFIG_SPL_BUILD
 
-- 
2.17.1



More information about the U-Boot mailing list