From 244b2c5ca8b14627e4a17755e5922221e121c771 Mon Sep 17 00:00:00 2001
From: hc <hc@nodka.com>
Date: Wed, 09 Oct 2024 06:15:07 +0000
Subject: [PATCH] change system file
---
u-boot/common/image-fdt.c | 80 +++++++++++++++++++++++++---------------
1 files changed, 50 insertions(+), 30 deletions(-)
diff --git a/u-boot/common/image-fdt.c b/u-boot/common/image-fdt.c
index 2c79b96..2884880 100644
--- a/u-boot/common/image-fdt.c
+++ b/u-boot/common/image-fdt.c
@@ -78,39 +78,16 @@
}
#endif
-/**
- * boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable
- * @lmb: pointer to lmb handle, will be used for memory mgmt
- * @fdt_blob: pointer to fdt blob base address
- *
- * Adds the memreserve regions in the dtb to the lmb block. Adding the
- * memreserve regions prevents u-boot from using them to store the initrd
- * or the fdt blob.
- */
-void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
+void boot_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
{
- uint64_t addr, size;
- int i, total;
int rsv_offset, offset;
fdt_size_t rsv_size;
fdt_addr_t rsv_addr;
- /* we needn't repeat do reserve, do_bootm_linux would call this again */
- static int rsv_done;
const void *prop;
+ int i = 0;
- if (fdt_check_header(fdt_blob) != 0 || rsv_done)
+ if (fdt_check_header(fdt_blob) != 0)
return;
-
- rsv_done = 1;
-
- total = fdt_num_mem_rsv(fdt_blob);
- for (i = 0; i < total; i++) {
- if (fdt_get_mem_rsv(fdt_blob, i, &addr, &size) != 0)
- continue;
- printf(" reserving fdt memory region: addr=%llx size=%llx\n",
- (unsigned long long)addr, (unsigned long long)size);
- lmb_reserve(lmb, addr, size);
- }
rsv_offset = fdt_subnode_offset(fdt_blob, 0, "reserved-memory");
if (rsv_offset == -FDT_ERR_NOTFOUND)
@@ -128,13 +105,56 @@
&rsv_size, false);
if (rsv_addr == FDT_ADDR_T_NONE || !rsv_size)
continue;
- printf(" 'reserved-memory' %s: addr=%llx size=%llx\n",
- fdt_get_name(fdt_blob, offset, NULL),
- (unsigned long long)rsv_addr, (unsigned long long)rsv_size);
- lmb_reserve(lmb, rsv_addr, rsv_size);
+
+ i++;
+ /* be quiet while reserve */
+ if (lmb) {
+ lmb_reserve(lmb, rsv_addr, rsv_size);
+ } else {
+ if (i == 1)
+ printf("## reserved-memory:\n");
+
+ printf(" %s: addr=%llx size=%llx\n",
+ fdt_get_name(fdt_blob, offset, NULL),
+ (unsigned long long)rsv_addr, (unsigned long long)rsv_size);
+ }
}
}
+/**
+ * boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable
+ * @lmb: pointer to lmb handle, will be used for memory mgmt
+ * @fdt_blob: pointer to fdt blob base address
+ *
+ * Adds the memreserve regions in the dtb to the lmb block. Adding the
+ * memreserve regions prevents u-boot from using them to store the initrd
+ * or the fdt blob.
+ */
+void boot_fdt_add_mem_rsv_regions(struct lmb *lmb, void *fdt_blob)
+{
+ uint64_t addr, size;
+ int i, total;
+ /* we needn't repeat do reserve, do_bootm_linux would call this again */
+ static int rsv_done;
+
+ if (fdt_check_header(fdt_blob) != 0 || rsv_done)
+ return;
+
+ rsv_done = 1;
+
+ total = fdt_num_mem_rsv(fdt_blob);
+ for (i = 0; i < total; i++) {
+ if (fdt_get_mem_rsv(fdt_blob, i, &addr, &size) != 0)
+ continue;
+ printf(" reserving fdt memory region: addr=%llx size=%llx\n",
+ (unsigned long long)addr, (unsigned long long)size);
+ lmb_reserve(lmb, addr, size);
+ }
+
+ /* lmb_reserve() for "reserved-memory" */
+ boot_mem_rsv_regions(lmb, fdt_blob);
+}
+
#ifdef CONFIG_SYSMEM
/**
* boot_fdt_add_mem_rsv_regions - Mark the memreserve sections as unusable
--
Gitblit v1.6.2