]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
libnvdimm: Update persistence domain value for of_pmem and papr_scm device
authorAneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Tue, 24 Mar 2020 03:48:21 +0000 (09:18 +0530)
committerDan Williams <dan.j.williams@intel.com>
Tue, 31 Mar 2020 21:42:28 +0000 (14:42 -0700)
Currently, kernel shows the below values
"persistence_domain":"cpu_cache"
"persistence_domain":"memory_controller"
"persistence_domain":"unknown"

"cpu_cache" indicates no extra instructions is needed to ensure the persistence
of data in the pmem media on power failure.

"memory_controller" indicates cpu cache flush instructions are required to flush
the data. Platform provides mechanisms to automatically flush outstanding
write data from memory controler to pmem on system power loss.

Based on the above use memory_controller for non volatile regions on ppc64.

Signed-off-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com>
Link: https://lore.kernel.org/r/20200324034821.60869-1-aneesh.kumar@linux.ibm.com
Signed-off-by: Dan Williams <dan.j.williams@intel.com>
arch/powerpc/platforms/pseries/papr_scm.c
drivers/nvdimm/of_pmem.c

index 0b4467e378e5d33ee7a15316f982fc09d4cfb3b3..922a4fc3b61b8d6b25b1f0f0d028ed7a1d2bc345 100644 (file)
@@ -361,8 +361,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);
index 8224d1431ea9412c55eeda35f16d252c51fee9e1..6826a274a1f105b9520947d154d7b16f86e0914a 100644 (file)
@@ -62,8 +62,10 @@ static int of_pmem_region_probe(struct platform_device *pdev)
 
                if (is_volatile)
                        region = nvdimm_volatile_region_create(bus, &ndr_desc);
-               else
+               else {
+                       set_bit(ND_REGION_PERSIST_MEMCTRL, &ndr_desc.flags);
                        region = nvdimm_pmem_region_create(bus, &ndr_desc);
+               }
 
                if (!region)
                        dev_warn(&pdev->dev, "Unable to register region %pR from %pOF\n",