powerpc/papr_scm: Add support for fetching nvdimm 'fuel-gauge' metric
We add support for reporting 'fuel-gauge' NVDIMM metric via PAPR_PDSM_HEALTH pdsm payload. 'fuel-gauge' metric indicates the usage life remaining of a papr-scm compatible NVDIMM. PHYP exposes this metric via the H_SCM_PERFORMANCE_STATS. The metric value is returned from the pdsm by extending the return payload 'struct nd_papr_pdsm_health' without breaking the ABI. A new field 'dimm_fuel_gauge' to hold the metric value is introduced at the end of the payload struct and its presence is indicated by by extension flag PDSM_DIMM_HEALTH_RUN_GAUGE_VALID. The patch introduces a new function papr_pdsm_fuel_gauge() that is called from papr_pdsm_health(). If fetching NVDIMM performance stats is supported then 'papr_pdsm_fuel_gauge()' allocated an output buffer large enough to hold the performance stat and passes it to drc_pmem_query_stats() that issues the HCALL to PHYP. The return value of the stat is then populated in the 'struct nd_papr_pdsm_health.dimm_fuel_gauge' field with extension flag 'PDSM_DIMM_HEALTH_RUN_GAUGE_VALID' set in 'struct nd_papr_pdsm_health.extension_flags' Signed-off-by: Vaibhav Jain <vaibhav@linux.ibm.com> Reviewed-by: Aneesh Kumar K.V <aneesh.kumar@linux.ibm.com> Signed-off-by: Michael Ellerman <mpe@ellerman.id.au> Link: https://lore.kernel.org/r/20200731064153.182203-3-vaibhav@linux.ibm.com
This commit is contained in:
committed by
Michael Ellerman
parent
2d02bf835e
commit
af0870c4e7
@@ -72,6 +72,11 @@
|
||||
#define PAPR_PDSM_DIMM_CRITICAL 2
|
||||
#define PAPR_PDSM_DIMM_FATAL 3
|
||||
|
||||
/* struct nd_papr_pdsm_health.extension_flags field flags */
|
||||
|
||||
/* Indicate that the 'dimm_fuel_gauge' field is valid */
|
||||
#define PDSM_DIMM_HEALTH_RUN_GAUGE_VALID 1
|
||||
|
||||
/*
|
||||
* Struct exchanged between kernel & ndctl in for PAPR_PDSM_HEALTH
|
||||
* Various flags indicate the health status of the dimm.
|
||||
@@ -84,6 +89,7 @@
|
||||
* dimm_locked : Contents of the dimm cant be modified until CEC reboot
|
||||
* dimm_encrypted : Contents of dimm are encrypted.
|
||||
* dimm_health : Dimm health indicator. One of PAPR_PDSM_DIMM_XXXX
|
||||
* dimm_fuel_gauge : Life remaining of DIMM as a percentage from 0-100
|
||||
*/
|
||||
struct nd_papr_pdsm_health {
|
||||
union {
|
||||
@@ -96,6 +102,9 @@ struct nd_papr_pdsm_health {
|
||||
__u8 dimm_locked;
|
||||
__u8 dimm_encrypted;
|
||||
__u16 dimm_health;
|
||||
|
||||
/* Extension flag PDSM_DIMM_HEALTH_RUN_GAUGE_VALID */
|
||||
__u16 dimm_fuel_gauge;
|
||||
};
|
||||
__u8 buf[ND_PDSM_PAYLOAD_MAX_SIZE];
|
||||
};
|
||||
|
||||
Reference in New Issue
Block a user