All of lore.kernel.org
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@Huawei.com>
To: Vishal Verma <vishal.l.verma@intel.com>
Cc: <linux-cxl@vger.kernel.org>, Dan Williams <dan.j.williams@intel.com>
Subject: Re: [PATCH v2] tools/testing/cxl: add mock output for the GET_HEALTH_INFO command
Date: Fri, 15 Oct 2021 17:09:33 +0100	[thread overview]
Message-ID: <20211015170933.00005eb5@Huawei.com> (raw)
In-Reply-To: <20211011222826.184775-1-vishal.l.verma@intel.com>

On Mon, 11 Oct 2021 16:28:26 -0600
Vishal Verma <vishal.l.verma@intel.com> wrote:

> Add mocked health information for cxl_test memdevs. This allows
> cxl-cli's 'list' command to display the canned health_info fields.
> 
> Cc: Dan Williams <dan.j.williams@intel.com>
> Signed-off-by: Vishal Verma <vishal.l.verma@intel.com>

Hi Vishal,

Small issue with cpu_to_le16() for 32 bit le fields.
With that fixed.

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>
> ---
>  tools/testing/cxl/test/mem.c | 48 ++++++++++++++++++++++++++++++++++++
>  1 file changed, 48 insertions(+)
> 
> v2:
> - Move the health_info struct definition into tools/testing since the
>   mock driver is currently the only user (Dan)
> - Add comments for the various status fields describing the flags being
>   set (Dan)
> - Add a size check before copying the cmd buffer (Dan)
> 
> diff --git a/tools/testing/cxl/test/mem.c b/tools/testing/cxl/test/mem.c
> index 12a8437a9ca0..60264a18d3ca 100644
> --- a/tools/testing/cxl/test/mem.c
> +++ b/tools/testing/cxl/test/mem.c
> @@ -28,8 +28,24 @@ static struct cxl_cel_entry mock_cel[] = {
>  		.opcode = cpu_to_le16(CXL_MBOX_OP_SET_LSA),
>  		.effect = cpu_to_le16(EFFECT(1) | EFFECT(2)),
>  	},
> +	{
> +		.opcode = cpu_to_le16(CXL_MBOX_OP_GET_HEALTH_INFO),
> +		.effect = cpu_to_le16(0),
> +	},
>  };
>  
> +/* See CXL 2.0 Table 181 Get Health Info Output Payload */
> +struct cxl_mbox_health_info {
> +	u8 health_status;
> +	u8 media_status;
> +	u8 ext_status;
> +	u8 life_used;
> +	__le16 temperature;
> +	__le32 dirty_shutdowns;
> +	__le32 volatile_errors;
> +	__le32 pmem_errors;
> +} __packed;
> +
>  static struct {
>  	struct cxl_mbox_get_supported_logs gsl;
>  	struct cxl_gsl_entry entry;
> @@ -156,6 +172,35 @@ static int mock_set_lsa(struct cxl_mem *cxlm, struct cxl_mbox_cmd *cmd)
>  	return 0;
>  }
>  
> +static int mock_health_info(struct cxl_mem *cxlm, struct cxl_mbox_cmd *cmd)
> +{
> +	struct cxl_mbox_health_info health_info = {
> +		/* set flags for maint needed, perf degraded, hw replacement */
> +		.health_status = 0x7,
> +		/* set media status to "All Data Lost" */
> +		.media_status = 0x3,
> +		/*
> +		 * set ext_status flags for:
> +		 *  ext_life_used: normal,
> +		 *  ext_temperature: critical,
> +		 *  ext_corrected_volatile: warning,
> +		 *  ext_corrected_persistent: normal,
> +		 */
> +		.ext_status = 0x18,
> +		.life_used = 15,
> +		.temperature = cpu_to_le16(25),
> +		.dirty_shutdowns = cpu_to_le16(10),

32 bit field as are the next two so I would assume
cpu_to_le32() is the more appropriate call.

> +		.volatile_errors = cpu_to_le16(20),
> +		.pmem_errors = cpu_to_le16(30),
> +	};
> +
> +	if (cmd->size_out < sizeof(health_info))
> +		return -EINVAL;
> +
> +	memcpy(cmd->payload_out, &health_info, sizeof(health_info));
> +	return 0;
> +}
> +
>  static int cxl_mock_mbox_send(struct cxl_mem *cxlm, struct cxl_mbox_cmd *cmd)
>  {
>  	struct device *dev = cxlm->dev;
> @@ -177,6 +222,9 @@ static int cxl_mock_mbox_send(struct cxl_mem *cxlm, struct cxl_mbox_cmd *cmd)
>  	case CXL_MBOX_OP_SET_LSA:
>  		rc = mock_set_lsa(cxlm, cmd);
>  		break;
> +	case CXL_MBOX_OP_GET_HEALTH_INFO:
> +		rc = mock_health_info(cxlm, cmd);
> +		break;
>  	default:
>  		break;
>  	}
> 
> base-commit: ed97afb53365cd03dde266c9644334a558fe5a16


      reply	other threads:[~2021-10-15 16:09 UTC|newest]

Thread overview: 2+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2021-10-11 22:28 [PATCH v2] tools/testing/cxl: add mock output for the GET_HEALTH_INFO command Vishal Verma
2021-10-15 16:09 ` Jonathan Cameron [this message]

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=20211015170933.00005eb5@Huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=dan.j.williams@intel.com \
    --cc=linux-cxl@vger.kernel.org \
    --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.