Linux CXL
 help / color / mirror / Atom feed
From: Jonathan Cameron <Jonathan.Cameron@huawei.com>
To: Dave Jiang <dave.jiang@intel.com>
Cc: <linux-cxl@vger.kernel.org>, <dan.j.williams@intel.com>,
	<ira.weiny@intel.com>, <vishal.l.verma@intel.com>,
	<alison.schofield@intel.com>, <dave@stgolabs.net>,
	<jgg@nvidia.com>, <shiju.jose@huawei.com>
Subject: Re: [PATCH v4 01/15] cxl: Enumerate feature commands
Date: Tue, 11 Feb 2025 17:05:09 +0000	[thread overview]
Message-ID: <20250211170509.00006de4@huawei.com> (raw)
In-Reply-To: <20250207233914.2375110-2-dave.jiang@intel.com>

On Fri, 7 Feb 2025 16:37:41 -0700
Dave Jiang <dave.jiang@intel.com> wrote:

> Add feature commands enumeration code in order to detect and enumerate
> the 3 feature related commands "get supported features", "get feature",
> and "set feature". The enumeration will help determine whether the driver
> can issue any of the 3 commands to the device.
> 
> Signed-off-by: Dave Jiang <dave.jiang@intel.com>

One trivial comment inline. Either way LGTM

Reviewed-by: Jonathan Cameron <Jonathan.Cameron@huawei.com>

> ---
> v4:
> - Move features cap to mbox. (Dan)
> - Drop features_cmds bitmap. (Dan)
> - Move setup of cxlfs to next patch since there's nothing to do here.
> ---
>  drivers/cxl/core/mbox.c | 36 +++++++++++++++++++++++++++++++++++-
>  drivers/cxl/cxlmem.h    |  3 +++
>  include/cxl/features.h  | 13 +++++++++++++
>  include/cxl/mailbox.h   |  3 +++
>  4 files changed, 54 insertions(+), 1 deletion(-)
>  create mode 100644 include/cxl/features.h
> 
> diff --git a/drivers/cxl/core/mbox.c b/drivers/cxl/core/mbox.c
> index 9c1b9e353e3e..5f8f5945cc02 100644
> --- a/drivers/cxl/core/mbox.c
> +++ b/drivers/cxl/core/mbox.c
> @@ -706,6 +706,35 @@ static int cxl_xfer_log(struct cxl_memdev_state *mds, uuid_t *uuid,
>  	return 0;
>  }
>  
> +static int check_features_opcodes(u16 opcode, int *ro_cmds, int *wr_cmds)
> +{
> +	switch (opcode) {
> +	case CXL_MBOX_OP_GET_SUPPORTED_FEATURES:
> +	case CXL_MBOX_OP_GET_FEATURE:
> +		(*ro_cmds)++;
> +		return 1;
> +	case CXL_MBOX_OP_SET_FEATURE:
> +		(*wr_cmds)++;
> +		return 1;
> +	default:
> +		return 0;
> +	}
> +}
> +
> +/* 'Get Supported Features' and 'Get Feature' */
> +#define MAX_FEATURES_READ_CMDS	2
> +static void set_features_cap(struct cxl_mailbox *cxl_mbox,
> +			     int ro_cmds, int wr_cmds)
> +{
> +	/* Setting up Features capability while walking the CEL */
> +	if (ro_cmds == MAX_FEATURES_READ_CMDS) {
> +		if (wr_cmds)
> +			cxl_mbox->feat_cap = CXL_FEATURES_RW;
> +		else
> +			cxl_mbox->feat_cap = CXL_FEATURES_RO;
> +	}
> +}
> +
>  /**
>   * cxl_walk_cel() - Walk through the Command Effects Log.
>   * @mds: The driver data for the operation
> @@ -721,7 +750,7 @@ static void cxl_walk_cel(struct cxl_memdev_state *mds, size_t size, u8 *cel)
>  	struct cxl_cel_entry *cel_entry;
>  	const int cel_entries = size / sizeof(*cel_entry);
>  	struct device *dev = mds->cxlds.dev;
> -	int i;
> +	int i, ro_cmds = 0, wr_cmds = 0;
>  
>  	cel_entry = (struct cxl_cel_entry *) cel;
>  
> @@ -733,6 +762,9 @@ static void cxl_walk_cel(struct cxl_memdev_state *mds, size_t size, u8 *cel)
>  		if (cmd) {
>  			set_bit(cmd->info.id, cxl_mbox->enabled_cmds);
>  			enabled++;
> +		} else {

All the following (is poison etc) are also effectively 'else' cases for this
if (cmd) but for simplicity of code that's not checked.

So maybe this should not be an else either?


> +			enabled += check_features_opcodes(opcode, &ro_cmds,
> +							  &wr_cmds);
>  		}
>  
>  		if (cxl_is_poison_command(opcode)) {
> @@ -748,6 +780,8 @@ static void cxl_walk_cel(struct cxl_memdev_state *mds, size_t size, u8 *cel)
>  		dev_dbg(dev, "Opcode 0x%04x %s\n", opcode,
>  			enabled ? "enabled" : "unsupported by driver");
>  	}
> +
> +	set_features_cap(cxl_mbox, ro_cmds, wr_cmds);
>  }
>  



  parent reply	other threads:[~2025-02-11 17:05 UTC|newest]

Thread overview: 45+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-02-07 23:37 [PATCH v4 00/15] cxl: Add CXL feature commands support via fwctl Dave Jiang
2025-02-07 23:37 ` [PATCH v4 01/15] cxl: Enumerate feature commands Dave Jiang
2025-02-07 23:47   ` Dan Williams
2025-02-08  6:00   ` Li Ming
2025-02-11 17:05   ` Jonathan Cameron [this message]
2025-02-07 23:37 ` [PATCH v4 02/15] cxl: Add Get Supported Features command for kernel usage Dave Jiang
2025-02-07 23:56   ` Dan Williams
2025-02-10 17:03     ` Dave Jiang
2025-02-08  6:13   ` Li Ming
2025-02-10 17:06     ` Dave Jiang
2025-02-07 23:37 ` [PATCH v4 03/15] cxl/test: Add Get Supported Features mailbox command support Dave Jiang
2025-02-07 23:37 ` [PATCH v4 04/15] cxl/mbox: Add GET_FEATURE mailbox command Dave Jiang
2025-02-08  0:12   ` Dan Williams
2025-02-07 23:37 ` [PATCH v4 05/15] cxl/mbox: Add SET_FEATURE " Dave Jiang
2025-02-08  0:21   ` Dan Williams
2025-02-08  6:17   ` Li Ming
2025-02-07 23:37 ` [PATCH v4 06/15] cxl: Setup exclusive CXL features that are reserved for the kernel Dave Jiang
2025-02-08  1:10   ` Dan Williams
2025-02-08  1:16     ` Dave Jiang
2025-02-08  6:22   ` Li Ming
2025-02-10 17:40     ` Dave Jiang
2025-02-10 17:50     ` Dave Jiang
2025-02-11  5:46       ` Li Ming
2025-02-11 16:13         ` Dave Jiang
2025-02-07 23:37 ` [PATCH v4 07/15] cxl: Add FWCTL support to CXL Dave Jiang
2025-02-08  1:24   ` Dan Williams
2025-02-07 23:37 ` [PATCH v4 08/15] cxl: Add support for FWCTL get driver information callback Dave Jiang
2025-02-08  1:25   ` Dan Williams
2025-02-10  6:21   ` Li Ming
2025-02-07 23:37 ` [PATCH v4 09/15] cxl: Move cxl feature command structs to user header Dave Jiang
2025-02-07 23:37 ` [PATCH v4 10/15] cxl: Add support for fwctl RPC command to enable CXL feature commands Dave Jiang
2025-02-08  1:29   ` Dan Williams
2025-02-08  1:34   ` Dan Williams
2025-02-08  7:09   ` Li Ming
2025-02-10 22:31     ` Dave Jiang
2025-02-07 23:37 ` [PATCH v4 11/15] cxl: Add support to handle user feature commands for get feature Dave Jiang
2025-02-10  6:41   ` Li Ming
2025-02-07 23:37 ` [PATCH v4 12/15] cxl: Add support to handle user feature commands for set feature Dave Jiang
2025-02-10  6:43   ` Li Ming
2025-02-07 23:37 ` [PATCH v4 13/15] cxl/test: Add Get Feature support to cxl_test Dave Jiang
2025-02-10  6:44   ` Li Ming
2025-02-07 23:37 ` [PATCH v4 14/15] cxl/test: Add Set " Dave Jiang
2025-02-10  6:44   ` Li Ming
2025-02-07 23:37 ` [PATCH v4 15/15] fwctl/cxl: Add documentation to FWCTL CXL Dave Jiang
2025-02-08  1:38   ` Dan Williams

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=20250211170509.00006de4@huawei.com \
    --to=jonathan.cameron@huawei.com \
    --cc=alison.schofield@intel.com \
    --cc=dan.j.williams@intel.com \
    --cc=dave.jiang@intel.com \
    --cc=dave@stgolabs.net \
    --cc=ira.weiny@intel.com \
    --cc=jgg@nvidia.com \
    --cc=linux-cxl@vger.kernel.org \
    --cc=shiju.jose@huawei.com \
    --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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox