riscv: Fix setting no-map in reserved memory nodes
authorSamuel Holland <samuel@sholland.org>
Sun, 12 Sep 2021 16:05:47 +0000 (11:05 -0500)
committerLeo Yu-Chi Liang <ycliang@andestech.com>
Thu, 7 Oct 2021 08:08:23 +0000 (16:08 +0800)
The no-map property is wrongly skipped if a no-map reserved memory
node follows one without that property. Fix this by not remembering
the absence of a no-map property across loop iterations.

Fixes: d4ea649f179a ("riscv: Provide a mechanism to fix DT for reserved memory")
Signed-off-by: Samuel Holland <samuel@sholland.org>
Reviewed-by: Bin Meng <bmeng.cn@gmail.com>
Reviewed-by: Rick Chen <rick@andestech.com>
Reviewed-by: Atish Patra <atish.patra@wdc.com>
arch/riscv/lib/fdt_fixup.c

index f636b28..61cf893 100644 (file)
@@ -31,7 +31,6 @@ int riscv_fdt_copy_resv_mem_node(const void *src, void *dst)
        fdt_addr_t addr;
        fdt_size_t size;
        int offset, node, err, rmem_offset;
-       bool nomap = true;
        char basename[32] = {0};
        int bname_len;
        int max_len = sizeof(basename);
@@ -81,9 +80,7 @@ int riscv_fdt_copy_resv_mem_node(const void *src, void *dst)
                        log_err("failed to add reserved memory: %d\n", err);
                        return err;
                }
-               if (!fdt_getprop(src, node, "no-map", NULL))
-                       nomap = false;
-               if (nomap) {
+               if (fdt_getprop(src, node, "no-map", NULL)) {
                        rmem_offset = fdt_node_offset_by_phandle(dst, phandle);
                        fdt_setprop_empty(dst, rmem_offset, "no-map");
                }