On 1/15/20 10:57 PM, Aneesh Kumar K.V wrote:
On 1/15/20 10:25 PM, Jeff Moyer wrote:
"Aneesh Kumar K.V" <aneesh.ku...@linux.ibm.com> writes:

Currently, kernel shows the below values
    "persistence_domain":"cpu_cache"
    "persistence_domain":"memory_controller"
    "persistence_domain":"unknown"

This patch updates the meaning of these values such that

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

"memory_controller" indicates platform provided instructions need to be issued as per documented sequence to make sure data flushed is guaranteed to be on pmem
media in case of system power loss.

Signed-off-by: Aneesh Kumar K.V <aneesh.ku...@linux.ibm.com>
---
  arch/powerpc/platforms/pseries/papr_scm.c | 7 ++++++-
  include/linux/libnvdimm.h                 | 6 +++---
  2 files changed, 9 insertions(+), 4 deletions(-)

diff --git a/arch/powerpc/platforms/pseries/papr_scm.c b/arch/powerpc/platforms/pseries/papr_scm.c
index c2ef320ba1bf..26a5ef263758 100644
--- a/arch/powerpc/platforms/pseries/papr_scm.c
+++ b/arch/powerpc/platforms/pseries/papr_scm.c
@@ -360,8 +360,13 @@ 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 {
+        /*
+         * We need to flush things correctly to guarantee persistance
+         */
+        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);

Would you also update of_pmem to indicate the persistence domain,
please?


sure.


diff --git a/include/linux/libnvdimm.h b/include/linux/libnvdimm.h
index f2a33f2e3ba8..9126737377e1 100644
--- a/include/linux/libnvdimm.h
+++ b/include/linux/libnvdimm.h
@@ -52,9 +52,9 @@ enum {
       */
      ND_REGION_PERSIST_CACHE = 1,
      /*
-     * Platform provides mechanisms to automatically flush outstanding
-     * write data from memory controler to pmem on system power loss.
-     * (ADR)
+     * Platform provides instructions to flush data such that on completion +     * of the instructions, data flushed is guaranteed to be on pmem even
+     * in case of a system power loss.

I find the prior description easier to understand.


I was trying to avoid the term 'automatically, 'memory controler' and ADR. Can I update the above as

/*
  * Platform provides mechanisms to flush outstanding write data
  * to pmem on system power loss.
  */


Wanted to add more details. So with the above interpretation, if the persistence_domain is found to be 'cpu_cache', application can expect a store instruction to guarantee persistence. If it is 'none' there is no persistence ( I am not sure how that is the difference from 'volatile' pmem region). If it is 'memory_controller' ( I am not sure whether that is the right term), application needs to follow the recommended mechanism to flush write data to pmem.

-aneesh
_______________________________________________
Linux-nvdimm mailing list -- linux-nvdimm@lists.01.org
To unsubscribe send an email to linux-nvdimm-le...@lists.01.org

Reply via email to