All of lore.kernel.org
 help / color / mirror / Atom feed
From: Vaibhav Jain <vaibhav@linux.ibm.com>
To: "Verma, Vishal L" <vishal.l.verma@intel.com>,
	"nvdimm@lists.linux.dev" <nvdimm@lists.linux.dev>
Cc: "Williams, Dan J" <dan.j.williams@intel.com>,
	"aneesh.kumar@linux.ibm.com" <aneesh.kumar@linux.ibm.com>,
	"Weiny, Ira" <ira.weiny@intel.com>
Subject: Re: [ndctl PATCH] libndctl/papr: Add support for reporting shutdown-count
Date: Sat, 22 May 2021 01:30:45 +0530	[thread overview]
Message-ID: <87tumvkgb6.fsf@vajain21.in.ibm.com> (raw)
In-Reply-To: <b7aa19188447306e649bb05f04fb4deeaee3e92d.camel@intel.com>

Hi Vishal,

Thanks for looking into this patch.

"Verma, Vishal L" <vishal.l.verma@intel.com> writes:

> On Fri, 2021-05-21 at 16:56 +0530, Vaibhav Jain wrote:
>> Add support for reporting dirty-shutdown-count (DSC) for PAPR based
>> NVDIMMs. The sysfs attribute exposing this value is located at
>> nmemX/papr/dirty_shutdown.
>> 
>> This counter is also returned in payload for PAPR_PDSM_HEALTH as newly
>> introduced member 'dimm_dsc' in 'struct nd_papr_pdsm_health'. Presence
>> of 'DSC' is indicated by the PDSM_DIMM_DSC_VALID extension flag.
>> 
>> The patch implements 'ndctl_dimm_ops.smart_get_shutdown_count'
>> callback in implemented as papr_smart_get_shutdown_count().
>> 
>> Kernel side changes to support reporting DSC have been proposed at
>> [1]. With updated kernel 'ndctl list -DH' reports following output on
>> PPC64:
>> 
>> $ sudo ndctl list -DH
>> [
>>   {
>>     "dev":"nmem0",
>>     "health":{
>>       "health_state":"ok",
>>       "life_used_percentage":50,
>>       "shutdown_state":"clean",
>>       "shutdown_count":10
>>     }
>>   }
>> ]
>> 
>> Link: https://lore.kernel.org/nvdimm/20210521111023.413732-1-vaibhav@linux.ibm.com
>
> I'd suggest just using '[1]: <https://lore....'  for this. The Link:
> trailer is added by 'b4' when I apply this patch, and points to this
> patch on lore. It would be confusing to have two Link: trailers
> pointing to different things.
>
Thanks for pointing this out. Will use your suggested format going
forward.

>> Signed-off-by: Vaibhav Jain <vaibhav@linux.ibm.com>
>> ---
>>  ndctl/lib/libndctl.c  |  6 +++++-
>>  ndctl/lib/papr.c      | 23 +++++++++++++++++++++++
>>  ndctl/lib/papr_pdsm.h |  6 ++++++
>>  3 files changed, 34 insertions(+), 1 deletion(-)
>
> The patch looks okay to me - but I assume it depends on the kernel
> interfaces not changing in the patch referenced above. Should I put
> this on hold until the kernel side is accepted?
>
Yes, it will be better to hold this until the corroponding kernel patch
is merged.

>> 
>> diff --git a/ndctl/lib/libndctl.c b/ndctl/lib/libndctl.c
>> index aa36a3c87c57..6ee426ae30e1 100644
>> --- a/ndctl/lib/libndctl.c
>> +++ b/ndctl/lib/libndctl.c
>> @@ -1795,8 +1795,12 @@ static int add_papr_dimm(struct ndctl_dimm *dimm, const char *dimm_base)
>>  
>>  		/* Allocate monitor mode fd */
>>  		dimm->health_eventfd = open(path, O_RDONLY|O_CLOEXEC);
>> -		rc = 0;
>> +		/* Get the dirty shutdown counter value */
>> +		sprintf(path, "%s/papr/dirty_shutdown", dimm_base);
>> +		if (sysfs_read_attr(ctx, path, buf) == 0)
>> +			dimm->dirty_shutdown = strtoll(buf, NULL, 0);
>>  
>> +		rc = 0;
>>  	} else if (strcmp(buf, "nvdimm_test") == 0) {
>>  		/* probe via common populate_dimm_attributes() */
>>  		rc = populate_dimm_attributes(dimm, dimm_base, "papr");
>> diff --git a/ndctl/lib/papr.c b/ndctl/lib/papr.c
>> index 9c6f2f045fc2..42ff200dc588 100644
>> --- a/ndctl/lib/papr.c
>> +++ b/ndctl/lib/papr.c
>> @@ -165,6 +165,9 @@ static unsigned int papr_smart_get_flags(struct ndctl_cmd *cmd)
>>  		if (health.extension_flags & PDSM_DIMM_HEALTH_RUN_GAUGE_VALID)
>>  			flags |= ND_SMART_USED_VALID;
>>  
>> +		if (health.extension_flags &  PDSM_DIMM_DSC_VALID)
>> +			flags |= ND_SMART_SHUTDOWN_COUNT_VALID;
>> +
>>  		return flags;
>>  	}
>>  
>> @@ -236,6 +239,25 @@ static unsigned int papr_smart_get_life_used(struct ndctl_cmd *cmd)
>>  		(100 - health.dimm_fuel_gauge) : 0;
>>  }
>>  
>> +static unsigned int papr_smart_get_shutdown_count(struct ndctl_cmd *cmd)
>> +{
>> +
>> +	struct nd_papr_pdsm_health health;
>> +
>> +	/* Ignore in case of error or invalid pdsm */
>> +	if (!cmd_is_valid(cmd) ||
>> +	    to_pdsm(cmd)->cmd_status != 0 ||
>> +	    to_pdsm_cmd(cmd) != PAPR_PDSM_HEALTH)
>> +		return 0;
>> +
>> +	/* get the payload from command */
>> +	health = to_payload(cmd)->health;
>> +
>> +	return (health.extension_flags & PDSM_DIMM_DSC_VALID) ?
>> +		(health.dimm_dsc) : 0;
>> +
>> +}
>> +
>>  struct ndctl_dimm_ops * const papr_dimm_ops = &(struct ndctl_dimm_ops) {
>>  	.cmd_is_supported = papr_cmd_is_supported,
>>  	.smart_get_flags = papr_smart_get_flags,
>> @@ -245,4 +267,5 @@ struct ndctl_dimm_ops * const papr_dimm_ops = &(struct ndctl_dimm_ops) {
>>  	.smart_get_health = papr_smart_get_health,
>>  	.smart_get_shutdown_state = papr_smart_get_shutdown_state,
>>  	.smart_get_life_used = papr_smart_get_life_used,
>> +	.smart_get_shutdown_count = papr_smart_get_shutdown_count,
>>  };
>> diff --git a/ndctl/lib/papr_pdsm.h b/ndctl/lib/papr_pdsm.h
>> index 1bac8a7fc933..f45b1e40c075 100644
>> --- a/ndctl/lib/papr_pdsm.h
>> +++ b/ndctl/lib/papr_pdsm.h
>> @@ -75,6 +75,9 @@
>>  /* Indicate that the 'dimm_fuel_gauge' field is valid */
>>  #define PDSM_DIMM_HEALTH_RUN_GAUGE_VALID 1
>>  
>> +/* Indicate that the 'dimm_dsc' field is valid */
>> +#define PDSM_DIMM_DSC_VALID 2
>> +
>>  /*
>>   * Struct exchanged between kernel & ndctl in for PAPR_PDSM_HEALTH
>>   * Various flags indicate the health status of the dimm.
>> @@ -103,6 +106,9 @@ struct nd_papr_pdsm_health {
>>  
>>  			/* Extension flag PDSM_DIMM_HEALTH_RUN_GAUGE_VALID */
>>  			__u16 dimm_fuel_gauge;
>> +
>> +			/* Extension flag PDSM_DIMM_DSC_VALID */
>> +			__u64 dimm_dsc;
>>  		};
>>  		__u8 buf[ND_PDSM_PAYLOAD_MAX_SIZE];
>>  	};
>

-- 
Cheers
~ Vaibhav

  reply	other threads:[~2021-05-21 20:01 UTC|newest]

Thread overview: 4+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-05-21 11:26 [ndctl PATCH] libndctl/papr: Add support for reporting shutdown-count Vaibhav Jain
2021-05-21 19:29 ` Verma, Vishal L
2021-05-21 20:00   ` Vaibhav Jain [this message]
2021-06-28  9:05     ` Vaibhav Jain

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87tumvkgb6.fsf@vajain21.in.ibm.com \
    --to=vaibhav@linux.ibm.com \
    --cc=aneesh.kumar@linux.ibm.com \
    --cc=dan.j.williams@intel.com \
    --cc=ira.weiny@intel.com \
    --cc=nvdimm@lists.linux.dev \
    --cc=vishal.l.verma@intel.com \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.