瀏覽代碼

powerpc/numa: NUMA topology support for PowerNV

This patch adds support for numa topology on powernv platforms running
OPAL formware. It checks for the type of platform at run time and
sets the affinity form correctly so that NUMA topology can be discovered
correctly.

Signed-off-by: Dipankar Sarma <dipankar@in.ibm.com>
Signed-off-by: Benjamin Herrenschmidt <benh@kernel.crashing.org>
Dipankar Sarma 13 年之前
父節點
當前提交
1c8ee73395
共有 1 個文件被更改,包括 17 次插入7 次删除
  1. 17 7
      arch/powerpc/mm/numa.c

+ 17 - 7
arch/powerpc/mm/numa.c

@@ -315,7 +315,10 @@ static int __init find_min_common_depth(void)
 	struct device_node *root;
 	struct device_node *root;
 	const char *vec5;
 	const char *vec5;
 
 
-	root = of_find_node_by_path("/rtas");
+	if (firmware_has_feature(FW_FEATURE_OPAL))
+		root = of_find_node_by_path("/ibm,opal");
+	else
+		root = of_find_node_by_path("/rtas");
 	if (!root)
 	if (!root)
 		root = of_find_node_by_path("/");
 		root = of_find_node_by_path("/");
 
 
@@ -344,12 +347,19 @@ static int __init find_min_common_depth(void)
 
 
 #define VEC5_AFFINITY_BYTE	5
 #define VEC5_AFFINITY_BYTE	5
 #define VEC5_AFFINITY		0x80
 #define VEC5_AFFINITY		0x80
-	chosen = of_find_node_by_path("/chosen");
-	if (chosen) {
-		vec5 = of_get_property(chosen, "ibm,architecture-vec-5", NULL);
-		if (vec5 && (vec5[VEC5_AFFINITY_BYTE] & VEC5_AFFINITY)) {
-			dbg("Using form 1 affinity\n");
-			form1_affinity = 1;
+
+	if (firmware_has_feature(FW_FEATURE_OPAL))
+		form1_affinity = 1;
+	else {
+		chosen = of_find_node_by_path("/chosen");
+		if (chosen) {
+			vec5 = of_get_property(chosen,
+					       "ibm,architecture-vec-5", NULL);
+			if (vec5 && (vec5[VEC5_AFFINITY_BYTE] &
+							VEC5_AFFINITY)) {
+				dbg("Using form 1 affinity\n");
+				form1_affinity = 1;
+			}
 		}
 		}
 	}
 	}