Linux CXL
 help / color / mirror / Atom feed
From: Dan Williams <dan.j.williams@intel.com>
To: Dave Jiang <dave.jiang@intel.com>, <linux-cxl@vger.kernel.org>
Cc: <dan.j.williams@intel.com>, <ira.weiny@intel.com>,
	<vishal.l.verma@intel.com>, <alison.schofield@intel.com>,
	<Jonathan.Cameron@huawei.com>, <dave@stgolabs.net>,
	<jgg@nvidia.com>, <shiju.jose@huawei.com>
Subject: Re: [PATCH v1 07/19] cxl/mbox: Add GET_FEATURE mailbox command
Date: Fri, 24 Jan 2025 14:58:26 -0800	[thread overview]
Message-ID: <67941b1261dfc_20f329470@dwillia2-xfh.jf.intel.com.notmuch> (raw)
In-Reply-To: <20250122235159.2716036-8-dave.jiang@intel.com>

Dave Jiang wrote:
> From: Shiju Jose <shiju.jose@huawei.com>
> 
> Add support for GET_FEATURE mailbox command.
> 
> CXL spec 3.1 section 8.2.9.6 describes optional device specific features.
> The settings of a feature can be retrieved using Get Feature command.
> CXL spec 3.1 section 8.2.9.6.2 describes Get Feature command.
> 
> Signed-off-by: Shiju Jose <shiju.jose@huawei.com>
> Signed-off-by: Dave Jiang <dave.jiang@intel.com>
> ---
> v1:
> - pass in cxl_mbox instead of cxlds (Dan)
> - Move to the feature driver model. (Dan)
> ---
>  drivers/cxl/core/features.c | 74 +++++++++++++++++++++++++++++++++++++
>  drivers/cxl/features.c      |  6 +--
>  include/cxl/features.h      | 27 ++++++++++++++
>  3 files changed, 102 insertions(+), 5 deletions(-)
> 
> diff --git a/drivers/cxl/core/features.c b/drivers/cxl/core/features.c
> index 66a4b82910e6..ab9386b53a95 100644
> --- a/drivers/cxl/core/features.c
> +++ b/drivers/cxl/core/features.c
> @@ -4,6 +4,7 @@
>  #include <cxl/mailbox.h>
>  #include "cxl.h"
>  #include "core.h"
> +#include "cxlmem.h"
>  
>  #define CXL_FEATURE_MAX_DEVS 65536
>  static DEFINE_IDA(cxl_features_ida);
> @@ -97,3 +98,76 @@ cxl_get_supported_feature_entry(struct cxl_features *features,
>  	return ERR_PTR(-ENOENT);
>  }
>  EXPORT_SYMBOL_NS_GPL(cxl_get_supported_feature_entry, "CXL");
> +
> +bool cxl_feature_enabled(struct cxl_features_state *cfs, u16 opcode)
> +{
> +	struct cxl_mailbox *cxl_mbox = cfs->features->cxl_mbox;
> +	struct cxl_mem_command *cmd;
> +
> +	cmd = cxl_find_feature_command(opcode);
> +	if (!cmd)
> +		return false;
> +
> +	return test_bit(cmd->info.id, cxl_mbox->feature_cmds);
> +}
> +EXPORT_SYMBOL_NS_GPL(cxl_feature_enabled, "CXL");
> +
> +size_t cxl_get_feature(struct cxl_features *features, const uuid_t feat_uuid,
> +		       enum cxl_get_feat_selection selection,
> +		       void *feat_out, size_t feat_out_size, u16 offset,

Is @feat_out guaranteed to be a kernel pointer, or might it be an __user
pointer?

Shouldn't @feat_uuid be a 'uuid_t *' rather than a 'uuid_t'?

> +		       u16 *return_code)
> +{
> +	size_t data_to_rd_size, size_out;
> +	struct cxl_features_state *cfs;
> +	struct cxl_mbox_get_feat_in pi;
> +	struct cxl_mailbox *cxl_mbox;
> +	struct cxl_mbox_cmd mbox_cmd;
> +	size_t data_rcvd_size = 0;
> +	int rc;
> +
> +	if (return_code)
> +		*return_code = CXL_MBOX_CMD_RC_INPUT;
> +
> +	cfs = dev_get_drvdata(&features->dev);
> +	if (!cfs)
> +		return 0;
> +
> +	if (!cxl_feature_enabled(cfs, CXL_MBOX_OP_GET_FEATURE))
> +		return 0;

Per previous feedback, just make the caller responsible for knowing this
in advance, not checking every call. With that gone this function loses
its dependency on 'struct cxl_features' and 'struct cxl_features_state'
and can take 'struct cxl_mbox' directly.

If for some reason the caller did not know that Get Feature was missing
the device will still fail it anyway, so that boilerplate is not serving
any useful purpose.

  parent reply	other threads:[~2025-01-24 22:58 UTC|newest]

Thread overview: 72+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2025-01-22 23:50 [PATCH v1 0/19] cxl: Add CXL feature commands support via fwctl Dave Jiang
2025-01-22 23:50 ` [PATCH v1 01/19] cxl: Refactor user ioctl command path from mds to mailbox Dave Jiang
2025-01-22 23:50 ` [PATCH v1 02/19] cxl: Add skeletal features driver Dave Jiang
2025-01-23  3:59   ` Dan Williams
2025-01-23 15:49     ` Dave Jiang
2025-01-23 19:57       ` Dan Williams
2025-01-23 17:24   ` Jonathan Cameron
2025-01-22 23:50 ` [PATCH v1 03/19] cxl: Enumerate feature commands Dave Jiang
2025-01-23 17:33   ` Jonathan Cameron
2025-01-23 23:55   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 04/19] cxl: Add Get Supported Features command for kernel usage Dave Jiang
2025-01-23 17:43   ` Jonathan Cameron
2025-01-24  0:30   ` Dan Williams
2025-01-24 15:01     ` Jason Gunthorpe
2025-01-27 11:10     ` Jonathan Cameron
2025-01-28  0:54       ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 05/19] cxl: Add features driver attribute to emit number of features supported Dave Jiang
2025-01-23 17:44   ` Jonathan Cameron
2025-01-24  0:35   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 06/19] cxl/test: Add Get Supported Features mailbox command support Dave Jiang
2025-01-23 17:47   ` Jonathan Cameron
2025-01-24  0:42   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 07/19] cxl/mbox: Add GET_FEATURE mailbox command Dave Jiang
2025-01-23 17:50   ` Jonathan Cameron
2025-01-24 22:58   ` Dan Williams [this message]
2025-01-29  0:14     ` Dave Jiang
2025-01-22 23:50 ` [PATCH v1 08/19] cxl/mbox: Add SET_FEATURE " Dave Jiang
2025-01-23 17:52   ` Jonathan Cameron
2025-01-24 23:01   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 09/19] cxl: Setup exclusive CXL features that are reserved for the kernel Dave Jiang
2025-01-23 17:59   ` Jonathan Cameron
2025-01-24 23:05   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 10/19] cxl: Add FWCTL support to the CXL features driver Dave Jiang
2025-01-23 18:04   ` Jonathan Cameron
2025-01-23 18:53     ` Jason Gunthorpe
2025-01-24 23:14   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 11/19] cxl: Add support for get driver information Dave Jiang
2025-01-23 18:09   ` Jonathan Cameron
2025-01-25  1:26   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 12/19] cxl: Move cxl_mem.h under uapi to cxl exclusive directory Dave Jiang
2025-01-23 18:10   ` Jonathan Cameron
2025-01-25  1:29   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 13/19] cxl: Move cxl feature command structs to user header Dave Jiang
2025-01-23 18:12   ` Jonathan Cameron
2025-01-23 18:13     ` Jonathan Cameron
2025-01-25  1:34   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 14/19] cxl: Add support for fwctl RPC command to enable CXL feature commands Dave Jiang
2025-01-23 18:21   ` Jonathan Cameron
2025-01-25  2:08   ` Dan Williams
2025-01-27 10:51     ` Jonathan Cameron
2025-01-28  0:40       ` Dan Williams
2025-01-28 12:01         ` Jonathan Cameron
2025-01-28 15:55           ` Dave Jiang
2025-01-30 13:42             ` Jonathan Cameron
2025-02-04  1:43           ` Dan Williams
2025-02-04 10:04             ` Jonathan Cameron
2025-02-04 22:26               ` Dan Williams
2025-02-05 17:36                 ` Jonathan Cameron
2025-02-05 18:02                   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 15/19] cxl: Add support to handle user feature commands for get feature Dave Jiang
2025-01-23 18:25   ` Jonathan Cameron
2025-01-25  2:23   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 16/19] cxl: Add support to handle user feature commands for set feature Dave Jiang
2025-01-23 18:26   ` Jonathan Cameron
2025-01-25  2:29   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 17/19] cxl/test: Add Get Feature support to cxl_test Dave Jiang
2025-01-25  2:33   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 18/19] cxl/test: Add Set " Dave Jiang
2025-01-25  2:36   ` Dan Williams
2025-01-22 23:50 ` [PATCH v1 19/19] fwctl/cxl: Add documentation to FWCTL CXL Dave Jiang
2025-01-25  2:55   ` Dan Williams
2025-01-23 17:03 ` [PATCH v1 0/19] cxl: Add CXL feature commands support via fwctl Jonathan Cameron

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=67941b1261dfc_20f329470@dwillia2-xfh.jf.intel.com.notmuch \
    --to=dan.j.williams@intel.com \
    --cc=Jonathan.Cameron@huawei.com \
    --cc=alison.schofield@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