Merge branch 'for-5.7/libnvdimm' into libnvdimm-for-next
[linux-2.6-microblaze.git] / arch / powerpc / platforms / pseries / papr_scm.c
index 589858c..b642c4a 100644 (file)
@@ -285,25 +285,6 @@ int papr_scm_ndctl(struct nvdimm_bus_descriptor *nd_desc, struct nvdimm *nvdimm,
        return 0;
 }
 
-static inline int papr_scm_node(int node)
-{
-       int min_dist = INT_MAX, dist;
-       int nid, min_node;
-
-       if ((node == NUMA_NO_NODE) || node_online(node))
-               return node;
-
-       min_node = first_online_node;
-       for_each_online_node(nid) {
-               dist = node_distance(node, nid);
-               if (dist < min_dist) {
-                       min_dist = dist;
-                       min_node = nid;
-               }
-       }
-       return min_node;
-}
-
 static int papr_scm_nvdimm_init(struct papr_scm_priv *p)
 {
        struct device *dev = &p->pdev->dev;
@@ -349,7 +330,7 @@ static int papr_scm_nvdimm_init(struct papr_scm_priv *p)
 
        memset(&ndr_desc, 0, sizeof(ndr_desc));
        target_nid = dev_to_node(&p->pdev->dev);
-       online_nid = papr_scm_node(target_nid);
+       online_nid = numa_map_to_online_node(target_nid);
        ndr_desc.numa_node = online_nid;
        ndr_desc.target_node = target_nid;
        ndr_desc.res = &p->res;
@@ -361,8 +342,10 @@ static int papr_scm_nvdimm_init(struct papr_scm_priv *p)
 
        if (p->is_volatile)
                p->region = nvdimm_volatile_region_create(p->bus, &ndr_desc);
-       else
+       else {
+               set_bit(ND_REGION_PERSIST_MEMCTRL, &ndr_desc.flags);
                p->region = nvdimm_pmem_region_create(p->bus, &ndr_desc);
+       }
        if (!p->region) {
                dev_err(dev, "Error registering region %pR from %pOF\n",
                                ndr_desc.res, p->dn);