aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorToshi Kani <toshi.kani@hp.com>2015-08-26 12:20:23 -0400
committerDan Williams <dan.j.williams@intel.com>2015-08-27 14:35:58 -0400
commit402bae597ec68b84498432f5a0069f28bfb807d6 (patch)
tree00d25ba57290e2bc0665ff0251f0759c0df0ee98
parentde4a196c02a2a2631b516d90da6e8d052ccb07e8 (diff)
nfit: Clarify memory device state flags strings
ACPI 6.0 NFIT Memory Device State Flags in Table 5-129 defines NVDIMM status as follows. These bits indicate multiple info, such as failures, pending event, and capability. Bit [0] set to 1 to indicate that the previous SAVE to the Memory Device failed. Bit [1] set to 1 to indicate that the last RESTORE from the Memory Device failed. Bit [2] set to 1 to indicate that platform flush of data to Memory Device failed. As a result, the restored data content may be inconsistent even if SAVE and RESTORE do not indicate failure. Bit [3] set to 1 to indicate that the Memory Device is observed to be not armed prior to OSPM hand off. A Memory Device is considered armed if it is able to accept persistent writes. Bit [4] set to 1 to indicate that the Memory Device observed SMART and health events prior to OSPM handoff. /sys/bus/nd/devices/nmemX/nfit/flags shows this flags info. The output strings associated with the bits are "save", "restore", "smart", etc., which can be confusing as they may be interpreted as positive status, i.e. save succeeded. Change also the dev_info() message in acpi_nfit_register_dimms() to be consistent with the sysfs flags strings. Reported-by: Robert Elliott <elliott@hp.com> Signed-off-by: Toshi Kani <toshi.kani@hp.com> [ross: rename 'not_arm' to 'not_armed'] Cc: Ross Zwisler <ross.zwisler@linux.intel.com> [djbw: defer adding bit5, HEALTH_ENABLED, for now] Signed-off-by: Dan Williams <dan.j.williams@intel.com>
-rw-r--r--drivers/acpi/nfit.c20
1 files changed, 10 insertions, 10 deletions
diff --git a/drivers/acpi/nfit.c b/drivers/acpi/nfit.c
index bb29e56276bd..cf0fd96a7602 100644
--- a/drivers/acpi/nfit.c
+++ b/drivers/acpi/nfit.c
@@ -702,11 +702,11 @@ static ssize_t flags_show(struct device *dev,
702 u16 flags = to_nfit_memdev(dev)->flags; 702 u16 flags = to_nfit_memdev(dev)->flags;
703 703
704 return sprintf(buf, "%s%s%s%s%s\n", 704 return sprintf(buf, "%s%s%s%s%s\n",
705 flags & ACPI_NFIT_MEM_SAVE_FAILED ? "save " : "", 705 flags & ACPI_NFIT_MEM_SAVE_FAILED ? "save_fail " : "",
706 flags & ACPI_NFIT_MEM_RESTORE_FAILED ? "restore " : "", 706 flags & ACPI_NFIT_MEM_RESTORE_FAILED ? "restore_fail " : "",
707 flags & ACPI_NFIT_MEM_FLUSH_FAILED ? "flush " : "", 707 flags & ACPI_NFIT_MEM_FLUSH_FAILED ? "flush_fail " : "",
708 flags & ACPI_NFIT_MEM_ARMED ? "arm " : "", 708 flags & ACPI_NFIT_MEM_ARMED ? "not_armed " : "",
709 flags & ACPI_NFIT_MEM_HEALTH_OBSERVED ? "smart " : ""); 709 flags & ACPI_NFIT_MEM_HEALTH_OBSERVED ? "smart_event " : "");
710} 710}
711static DEVICE_ATTR_RO(flags); 711static DEVICE_ATTR_RO(flags);
712 712
@@ -849,12 +849,12 @@ static int acpi_nfit_register_dimms(struct acpi_nfit_desc *acpi_desc)
849 if ((mem_flags & ACPI_NFIT_MEM_FAILED_MASK) == 0) 849 if ((mem_flags & ACPI_NFIT_MEM_FAILED_MASK) == 0)
850 continue; 850 continue;
851 851
852 dev_info(acpi_desc->dev, "%s: failed: %s%s%s%s\n", 852 dev_info(acpi_desc->dev, "%s flags:%s%s%s%s\n",
853 nvdimm_name(nvdimm), 853 nvdimm_name(nvdimm),
854 mem_flags & ACPI_NFIT_MEM_SAVE_FAILED ? "save " : "", 854 mem_flags & ACPI_NFIT_MEM_SAVE_FAILED ? " save_fail" : "",
855 mem_flags & ACPI_NFIT_MEM_RESTORE_FAILED ? "restore " : "", 855 mem_flags & ACPI_NFIT_MEM_RESTORE_FAILED ? " restore_fail":"",
856 mem_flags & ACPI_NFIT_MEM_FLUSH_FAILED ? "flush " : "", 856 mem_flags & ACPI_NFIT_MEM_FLUSH_FAILED ? " flush_fail" : "",
857 mem_flags & ACPI_NFIT_MEM_ARMED ? "arm " : ""); 857 mem_flags & ACPI_NFIT_MEM_ARMED ? " not_armed" : "");
858 858
859 } 859 }
860 860