summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBin Meng <bin.meng@windriver.com>2020-06-25 18:16:06 -0700
committerAndes <uboot@andestech.com>2020-07-02 10:03:09 +0800
commitc4f7c506d9e0be6465f70636ee9ba62df9d6f132 (patch)
tree64d00a7965727030fb2f352c2e79aee1652a0f21
parent76585c9ecc987fb1747345c6ca27e5034e872b2c (diff)
riscv: Avoid the reserved memory fixup if src and dst point to the same place
The copy of reserved memory node from source dtb to destination dtb can be avoided if they point to the same place. This is useful when OF_PRIOR_STAGE is used. Signed-off-by: Bin Meng <bin.meng@windriver.com> Reviewed-by: Rick Chen <rick@andestech.com> Reviewed-by: Atish Patra <atish.patra@wdc.com>
-rw-r--r--arch/riscv/lib/fdt_fixup.c12
1 files changed, 8 insertions, 4 deletions
diff --git a/arch/riscv/lib/fdt_fixup.c b/arch/riscv/lib/fdt_fixup.c
index 6db48ad04a..5f523f0e07 100644
--- a/arch/riscv/lib/fdt_fixup.c
+++ b/arch/riscv/lib/fdt_fixup.c
@@ -82,10 +82,9 @@ int riscv_fdt_copy_resv_mem_node(const void *src, void *dst)
* @fdt: Pointer to the device tree in which reserved memory node needs to be
* added.
*
- * In RISC-V, any board compiled with OF_SEPARATE needs to copy the reserved
- * memory node from the device tree provided by the firmware to the device tree
- * used by U-Boot. This is a common function that individual board fixup
- * functions can invoke.
+ * In RISC-V, any board needs to copy the reserved memory node from the device
+ * tree provided by the firmware to the device tree used by U-Boot. This is a
+ * common function that individual board fixup functions can invoke.
*
* Return: 0 on success or error otherwise.
*/
@@ -95,6 +94,11 @@ int riscv_board_reserved_mem_fixup(void *fdt)
void *src_fdt_addr;
src_fdt_addr = map_sysmem(gd->arch.firmware_fdt_addr, 0);
+
+ /* avoid the copy if we are using the same device tree */
+ if (src_fdt_addr == fdt)
+ return 0;
+
err = riscv_fdt_copy_resv_mem_node(src_fdt_addr, fdt);
if (err < 0)
return err;