powerpc/papr_scm: Add support for fetching nvdimm 'fuel-gauge' metric
authorVaibhav Jain <vaibhav@linux.ibm.com>
Fri, 31 Jul 2020 06:41:53 +0000 (12:11 +0530)
committerMichael Ellerman <mpe@ellerman.id.au>
Fri, 31 Jul 2020 12:55:28 +0000 (22:55 +1000)
commitaf0870c4e75655b1931d0a5ffde2f448a2794362
tree6cb6280ff2f6653aca85c17f860286278199f1ba
parent2d02bf835e5731de632c8a13567905fa7c0da01c
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
arch/powerpc/include/uapi/asm/papr_pdsm.h
arch/powerpc/platforms/pseries/papr_scm.c