All of lore.kernel.org
 help / color / mirror / Atom feed
From: "Marek Behún" <kabel@kernel.org>
To: "Simon Glass" <sjg@chromium.org>, "Pali Rohár" <pali@kernel.org>
Cc: u-boot@lists.denx.de, "Marek Behún" <kabel@kernel.org>
Subject: [PATCH v2] board_f: Add support for CONFIG_OF_BOARD_FIXUP for XIP images
Date: Sun, 28 Aug 2022 17:19:29 +0200	[thread overview]
Message-ID: <20220828151929.32588-1-kabel@kernel.org> (raw)
In-Reply-To: <20220827181220.471-1-pali@kernel.org>

From: Pali Rohár <pali@kernel.org>

When U-Boot is running from flash memory (execute in place) then
gd->fdt_blob before relocation points to read-only flash memory.

So U-Boot calls board_fix_fdt() with read-only gd->fdt_blob pointer which
cause immediate CPU crash when callback is trying to modify gd->fdt_blob.

Fix this issue by introducing a new config option
OF_DTB_READONLY_BEFORE_RELOC which moves fix_fdt callback after the
reloc_fdt callback. This makes CONFIG_OF_BOARD_FIXUP working also if
U-Boot before relocation is not running from read/write (S)RAM memory.

This is required for mpc85xx boards when booting from flash NOR.

Signed-off-by: Pali Rohár <pali@kernel.org>
Signed-off-by: Marek Behún <kabel@kernel.org>
---
Changes since v1:
- just changed the new Kconfig option name and associated help string
---
 common/board_f.c | 8 +++++++-
 dts/Kconfig      | 6 ++++++
 2 files changed, 13 insertions(+), 1 deletion(-)

diff --git a/common/board_f.c b/common/board_f.c
index 18e2246733..35fb4a0753 100644
--- a/common/board_f.c
+++ b/common/board_f.c
@@ -911,7 +911,7 @@ static const init_fnc_t init_sequence_f[] = {
 	 *  - board info struct
 	 */
 	setup_dest_addr,
-#ifdef CONFIG_OF_BOARD_FIXUP
+#if defined(CONFIG_OF_BOARD_FIXUP) && !defined(CONFIG_OF_DTB_READONLY_BEFORE_RELOC)
 	fix_fdt,
 #endif
 #ifdef CONFIG_PRAM
@@ -926,6 +926,10 @@ static const init_fnc_t init_sequence_f[] = {
 	reserve_board,
 	reserve_global_data,
 	reserve_fdt,
+#if defined(CONFIG_OF_BOARD_FIXUP) && defined(CONFIG_OF_DTB_READONLY_BEFORE_RELOC)
+	reloc_fdt,
+	fix_fdt,
+#endif
 	reserve_bootstage,
 	reserve_bloblist,
 	reserve_arch,
@@ -936,7 +940,9 @@ static const init_fnc_t init_sequence_f[] = {
 	setup_bdinfo,
 	display_new_sp,
 	INIT_FUNC_WATCHDOG_RESET
+#if !defined(CONFIG_OF_BOARD_FIXUP) || !defined(CONFIG_OF_DTB_READONLY_BEFORE_RELOC)
 	reloc_fdt,
+#endif
 	reloc_bootstage,
 	reloc_bloblist,
 	setup_reloc,
diff --git a/dts/Kconfig b/dts/Kconfig
index bc5f22029f..29e5248b15 100644
--- a/dts/Kconfig
+++ b/dts/Kconfig
@@ -105,6 +105,12 @@ config OF_EMBED
 
 endchoice
 
+config OF_DTB_READONLY_BEFORE_RELOC
+	bool "Initial DTB (before relocation) for DT control is read-only"
+	help
+	  If initial (before relocation) DTB for DT control is read-only,
+	  (e.g. points to memory-mapped flash memory), set this option.
+
 config OF_BOARD
 	bool "Provided by the board (e.g a previous loader) at runtime"
 	default y if SANDBOX || OF_HAS_PRIOR_STAGE
-- 
2.35.1


  parent reply	other threads:[~2022-08-28 15:19 UTC|newest]

Thread overview: 10+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-08-27 18:12 [PATCH] board_f: Add support for CONFIG_OF_BOARD_FIXUP for XIP images Pali Rohár
2022-08-28  3:47 ` Marek Behún
2022-08-28  9:33   ` Pali Rohár
2022-08-28 15:19 ` Marek Behún [this message]
2022-10-09 11:32   ` [PATCH v2] " Pali Rohár
2022-10-10 23:48   ` Simon Glass
2022-11-01 23:23     ` Pali Rohár
2022-11-21 17:42       ` Pali Rohár
2022-11-21 17:45         ` Tom Rini
2022-11-21 18:10           ` Marek Behún

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20220828151929.32588-1-kabel@kernel.org \
    --to=kabel@kernel.org \
    --cc=pali@kernel.org \
    --cc=sjg@chromium.org \
    --cc=u-boot@lists.denx.de \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.