powerpc/numa: Look for ibm, associativity-reference-points at the root
authorMichael Ellerman <michael@ellerman.id.au>
Sun, 10 Apr 2011 20:42:05 +0000 (20:42 +0000)
committerBenjamin Herrenschmidt <benh@kernel.crashing.org>
Wed, 27 Apr 2011 04:18:35 +0000 (14:18 +1000)
If we don't find ibm,associativity-reference-points as a child of
/rtas, look for it at the root of the tree instead. We use this on
Book3E where we have no RTAS but still use the sPAPR conventions
for NUMA.

Signed-off-by: Michael Ellerman <michael@ellerman.id.au>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
arch/powerpc/mm/numa.c

index 5ec1dad2a19de81c6d323273994c0eca2a4f643a..e49b799b59a305015a9cf393b991efd537eaeec9 100644 (file)
@@ -311,14 +311,13 @@ EXPORT_SYMBOL_GPL(of_node_to_nid);
 static int __init find_min_common_depth(void)
 {
        int depth;
-       struct device_node *rtas_root;
        struct device_node *chosen;
+       struct device_node *root;
        const char *vec5;
 
-       rtas_root = of_find_node_by_path("/rtas");
-
-       if (!rtas_root)
-               return -1;
+       root = of_find_node_by_path("/rtas");
+       if (!root)
+               root = of_find_node_by_path("/");
 
        /*
         * This property is a set of 32-bit integers, each representing
@@ -332,7 +331,7 @@ static int __init find_min_common_depth(void)
         * NUMA boundary and the following are progressively less significant
         * boundaries. There can be more than one level of NUMA.
         */
-       distance_ref_points = of_get_property(rtas_root,
+       distance_ref_points = of_get_property(root,
                                        "ibm,associativity-reference-points",
                                        &distance_ref_points_depth);
 
@@ -376,11 +375,11 @@ static int __init find_min_common_depth(void)
                distance_ref_points_depth = MAX_DISTANCE_REF_POINTS;
        }
 
-       of_node_put(rtas_root);
+       of_node_put(root);
        return depth;
 
 err:
-       of_node_put(rtas_root);
+       of_node_put(root);
        return -1;
 }