powerpc: some changes in numa_setup_cpu()
[firefly-linux-kernel-4.4.55.git] / arch / powerpc / mm / numa.c
index 3a9061e9f5dd3c69d0183a2925754fdce955fee7..ec32d463cad916d7e3320cbb23a1bb9d3c0a9b73 100644 (file)
@@ -538,7 +538,7 @@ static int of_drconf_to_nid_single(struct of_drconf_cell *drmem,
  */
 static int numa_setup_cpu(unsigned long lcpu)
 {
-       int nid;
+       int nid = -1;
        struct device_node *cpu;
 
        /*
@@ -555,19 +555,21 @@ static int numa_setup_cpu(unsigned long lcpu)
 
        if (!cpu) {
                WARN_ON(1);
-               nid = 0;
-               goto out;
+               if (cpu_present(lcpu))
+                       goto out_present;
+               else
+                       goto out;
        }
 
        nid = of_node_to_nid_single(cpu);
 
+out_present:
        if (nid < 0 || !node_online(nid))
                nid = first_online_node;
-out:
-       map_cpu_to_node(lcpu, nid);
 
+       map_cpu_to_node(lcpu, nid);
        of_node_put(cpu);
-
+out:
        return nid;
 }