Page MenuHomeFreeBSD
Authored By
br
Dec 15 2014, 5:40 PM
Size
2 KB
Referenced Files
None
Subscribers
None
Index: sys/mips/beri/beri_machdep.c
===================================================================
--- sys/mips/beri/beri_machdep.c (revision 275803)
+++ sys/mips/beri/beri_machdep.c (working copy)
@@ -184,6 +184,8 @@
char **envp = (char **)a2;
long memsize;
#ifdef FDT
+ struct mem_region mr[FDT_MEM_REGIONS];
+ int mr_cnt, val;
char buf[2048]; /* early stack supposedly big enough */
vm_offset_t dtbp;
phandle_t chosen;
@@ -256,6 +258,13 @@
chosen = OF_finddevice("/chosen");
if (OF_getprop(chosen, "bootargs", buf, sizeof(buf)) != -1)
_parse_bootargs(buf);
+
+ /*
+ * Try to grab physical memory regions information from device tree.
+ * Override value provided by miniboot on success.
+ */
+ if (fdt_get_mem_regions(mr, &mr_cnt, &val) == 0)
+ memsize = val;
#endif
UPD
Index: sys/mips/beri/beri_machdep.c
===================================================================
--- sys/mips/beri/beri_machdep.c (revision 275803)
+++ sys/mips/beri/beri_machdep.c (working copy)
@@ -88,6 +88,11 @@
mips_init(void)
{
int i;
+#ifdef FDT
+ struct mem_region mr[FDT_MEM_REGIONS];
+ int mr_cnt, val;
+ int j;
+#endif
for (i = 0; i < 10; i++) {
phys_avail[i] = 0;
@@ -97,6 +102,17 @@
phys_avail[0] = MIPS_KSEG0_TO_PHYS(kernel_kseg0_end);
phys_avail[1] = ctob(realmem);
+#ifdef FDT
+ if (fdt_get_mem_regions(mr, &mr_cnt, &val) == 0) {
+ phys_avail[1] = mr[0].mr_size;
+
+ for (i = 1, j = 2; i < mr_cnt; i++, j+=2) {
+ phys_avail[j] = mr[i].mr_start;
+ phys_avail[j+1] = mr[i].mr_size;
+ }
+ }
+#endif
+
dump_avail[0] = phys_avail[0];
dump_avail[1] = phys_avail[1];
@@ -184,6 +200,8 @@
char **envp = (char **)a2;
long memsize;
#ifdef FDT
+ struct mem_region mr[FDT_MEM_REGIONS];
+ int mr_cnt, val;
char buf[2048]; /* early stack supposedly big enough */
vm_offset_t dtbp;
phandle_t chosen;
@@ -256,6 +274,13 @@
chosen = OF_finddevice("/chosen");
if (OF_getprop(chosen, "bootargs", buf, sizeof(buf)) != -1)
_parse_bootargs(buf);
+
+ /*
+ * Try to grab physical memory regions information from device tree.
+ * Override value provided by miniboot on success.
+ */
+ if (fdt_get_mem_regions(mr, &mr_cnt, &val) == 0)
+ memsize = val;
#endif
/*

File Metadata

Mime Type
text/plain; charset=utf-8
Storage Engine
blob
Storage Format
Raw Data
Storage Handle
58134
Default Alt Text
memsize (2 KB)

Event Timeline