[PATCH] powerpc: Add support for "linux,usable-memory" on memory nodes
authorMichael Ellerman <michael@ellerman.id.au>
Sun, 4 Dec 2005 07:39:55 +0000 (18:39 +1100)
committerPaul Mackerras <paulus@samba.org>
Mon, 9 Jan 2006 03:52:38 +0000 (14:52 +1100)
Milton has proposed that we should support a "linux,usable-memory" property
on memory nodes which describes, in preference to "reg", the regions of memory
Linux should use.

This facility is required for kdump to inform the second kernel which memory
it should use.

Signed-off-by: Haren Myneni <haren@us.ibm.com>
Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Paul Mackerras <paulus@samba.org>
arch/powerpc/kernel/prom.c
arch/powerpc/mm/numa.c

index fddc9c13bff50b3328e215ab2e8fe83d6d21a004..7e798d5b03b492b7e2c45328ed62f548a15f95cf 100644 (file)
@@ -567,7 +567,10 @@ static int __init interpret_root_props(struct device_node *np,
        unsigned int *rp;
        int rpsize = (naddrc + nsizec) * sizeof(unsigned int);
 
-       rp = (unsigned int *) get_property(np, "reg", &l);
+       rp = (unsigned int *) get_property(np, "linux,usable-memory", &l);
+       if (rp == NULL)
+               rp = (unsigned int *) get_property(np, "reg", &l);
+
        if (rp != 0 && l >= rpsize) {
                i = 0;
                adr = (struct address_range *) (*mem_start);
@@ -1275,7 +1278,9 @@ static int __init early_init_dt_scan_memory(unsigned long node,
        } else if (strcmp(type, "memory") != 0)
                return 0;
 
-       reg = (cell_t *)of_get_flat_dt_prop(node, "reg", &l);
+       reg = (cell_t *)of_get_flat_dt_prop(node, "linux,usable-memory", &l);
+       if (reg == NULL)
+               reg = (cell_t *)of_get_flat_dt_prop(node, "reg", &l);
        if (reg == NULL)
                return 0;
 
index 40c99deb691b4202b3be43bcd34d11f59da1d6c6..97e83f1d1bdb3f872e3f4d99c9b5abcf1e989ccc 100644 (file)
@@ -423,7 +423,12 @@ static int __init parse_numa_properties(void)
                unsigned int *memcell_buf;
                unsigned int len;
 
-               memcell_buf = (unsigned int *)get_property(memory, "reg", &len);
+               memcell_buf = (unsigned int *)get_property(memory,
+                       "linux,usable-memory", &len);
+               if (!memcell_buf || len <= 0)
+                       memcell_buf =
+                               (unsigned int *)get_property(memory, "reg",
+                                       &len);
                if (!memcell_buf || len <= 0)
                        continue;