All of lore.kernel.org
 help / color / mirror / Atom feed
* [Accel-config] Re: [PATCH v1] accel-config/libaccel-config: Add IAX support
@ 2020-11-18 17:46 Jiang, Dave
  0 siblings, 0 replies; 2+ messages in thread
From: Jiang, Dave @ 2020-11-18 17:46 UTC (permalink / raw)
  To: accel-config

[-- Attachment #1: Type: text/plain, Size: 7594 bytes --]



> -----Original Message-----
> From: ramesh.thomas(a)intel.com <ramesh.thomas(a)intel.com>
> Sent: Wednesday, November 18, 2020 10:39 AM
> To: accel-config(a)lists.01.org
> Cc: Thomas, Ramesh <ramesh.thomas(a)intel.com>; Luck, Tony
> <tony.luck(a)intel.com>; Jiang, Dave <dave.jiang(a)intel.com>; Zhu, Tony
> <tony.zhu(a)intel.com>
> Subject: [PATCH v1] accel-config/libaccel-config: Add IAX support
> 
> From: Ramesh Thomas <ramesh.thomas(a)intel.com>
> 
> Add Intel Analytics Accelerator support.
> 
> Signed-off-by: Ramesh Thomas <ramesh.thomas(a)intel.com>
> Signed-off-by: Dave Jiang <dave.jiang(a)intel.com>
> ---
>  accfg/config.c          | 18 ++++++++++++++++++
>  accfg/lib/libaccfg.c    |  3 +++
>  accfg/libaccel_config.h |  1 +
>  accfg/list.c            | 31 +++++++++++++++++++------------
>  util/json.c             | 16 ++++++++++++----
>  5 files changed, 53 insertions(+), 16 deletions(-)
> 
> diff --git a/accfg/config.c b/accfg/config.c index 3887873..c0d9333 100644
> --- a/accfg/config.c
> +++ b/accfg/config.c
> @@ -234,6 +234,10 @@ static int device_json_set_val(struct accfg_device
> *dev, json_object *jobj,  static int wq_json_set_val(struct accfg_wq *wq,
> json_object *jobj, char *key)  {
>  	int rc, i;
> +	struct accfg_device *dev = NULL;
> +
> +	if (wq)
> +		dev = accfg_wq_get_device(wq);
> 
>  	if (!wq || !jobj || !key)
>  		return -EINVAL;
> @@ -249,6 +253,10 @@ static int wq_json_set_val(struct accfg_wq *wq,
> json_object *jobj, char *key)
>  				if ((val == 0) && (errno == EINVAL))
>  					return -errno;
> 
> +				if ((accfg_device_get_type(dev) ==
> ACCFG_DEVICE_IAX)
> +					&& (!strcmp(wq_table[i].name,
> "block_on_fault"))) {
> +					return 0;
> +				}

One quick fix. Remove this please. They made IAX parity with DSA and the change is coming with D stepping. So IAX will support block on fault toggle. 

- Dave

>  				if (wq_table[i].is_writable &&
>  					!wq_table[i].is_writable(wq, val))
>  					return 0;
> @@ -296,6 +304,10 @@ static int group_json_set_val(struct accfg_group
> *group,
>  		json_object *jobj, char *key)
>  {
>  	int rc, i;
> +	struct accfg_device *dev = NULL;
> +
> +	if (group)
> +		dev = accfg_group_get_device(group);
> 
>  	if (!group || !jobj || !key)
>  		return -EINVAL;
> @@ -311,6 +323,12 @@ static int group_json_set_val(struct accfg_group
> *group,
>  						|| (val < 0))
>  					return -EINVAL;
> 
> +				if ((accfg_device_get_type(dev) ==
> ACCFG_DEVICE_IAX)
> +					&& ((!strcmp(group_table[i].name,
> "tokens_reserved"))
> +					|| (!strcmp(group_table[i].name,
> "use_token_limit"))
> +					|| (!strcmp(group_table[i].name,
> "tokens_allowed")))) {
> +					return 0;
> +				}
>  				if (group_table[i].is_writable &&
>  					!group_table[i].is_writable(group,
>  						val))
> diff --git a/accfg/lib/libaccfg.c b/accfg/lib/libaccfg.c index 70553f7..cd9da42
> 100644
> --- a/accfg/lib/libaccfg.c
> +++ b/accfg/lib/libaccfg.c
> @@ -39,6 +39,7 @@ static int filename_prefix_len;
> 
>  ACCFG_EXPORT char *accfg_basenames[] = {
>          [ACCFG_DEVICE_DSA]      = "dsa",
> +	[ACCFG_DEVICE_IAX]      = "iax",
>  	NULL
>  };
> 
> @@ -397,6 +398,8 @@ static int device_parse_type(struct accfg_device
> *device)
> 
>  	if (!strcmp(device->device_type_str, "dsa"))
>  		device->type = ACCFG_DEVICE_DSA;
> +	else if (!strcmp(device->device_type_str, "iax"))
> +		device->type = ACCFG_DEVICE_IAX;
>  	else
>  		device->type = ACCFG_DEVICE_TYPE_UNKNOWN;
> 
> diff --git a/accfg/libaccel_config.h b/accfg/libaccel_config.h index
> 392188e..f85670c 100644
> --- a/accfg/libaccel_config.h
> +++ b/accfg/libaccel_config.h
> @@ -31,6 +31,7 @@ extern "C" {
>  /* no need to save device state */
>  enum accfg_device_type {
>  	ACCFG_DEVICE_DSA = 0,
> +	ACCFG_DEVICE_IAX = 1,
>  	ACCFG_DEVICE_TYPE_UNKNOWN = -1,
>  };
> 
> diff --git a/accfg/list.c b/accfg/list.c index dfaac1f..c22da41 100644
> --- a/accfg/list.c
> +++ b/accfg/list.c
> @@ -54,6 +54,10 @@ static struct json_object *group_to_json(struct
> accfg_group *group,  {
>  	struct json_object *jgroup = json_object_new_object();
>  	struct json_object *jobj = NULL;
> +	struct accfg_device *dev = NULL;
> +
> +	if (group)
> +		dev = accfg_group_get_device(group);
> 
>  	if (!jgroup)
>  		return NULL;
> @@ -67,20 +71,23 @@ static struct json_object *group_to_json(struct
> accfg_group *group,
>  	if (!jobj)
>  		goto err;
> 
> -	json_object_object_add(jgroup, "tokens_reserved", jobj);
> -	jobj =
> json_object_new_int(accfg_group_get_use_token_limit(group));
> -	if (!jobj)
> -		goto err;
> +	if (accfg_device_get_type(dev) != ACCFG_DEVICE_IAX) {
> +		json_object_object_add(jgroup, "tokens_reserved", jobj);
> +		jobj =
> json_object_new_int(accfg_group_get_use_token_limit(group));
> +		if (!jobj)
> +			goto err;
> 
> -	json_object_object_add(jgroup, "use_token_limit", jobj);
> -	jobj =
> json_object_new_int(accfg_group_get_tokens_allowed(group));
> -	if (!jobj)
> -		goto err;
> +		json_object_object_add(jgroup, "use_token_limit", jobj);
> +		jobj =
> json_object_new_int(accfg_group_get_tokens_allowed(group));
> +		if (!jobj)
> +			goto err;
> 
> -	json_object_object_add(jgroup, "tokens_allowed", jobj);
> -	jobj =
> json_object_new_int(accfg_group_get_traffic_class_a(group));
> -	if (!jobj)
> -		goto err;
> +		json_object_object_add(jgroup, "tokens_allowed", jobj);
> +		jobj =
> json_object_new_int(accfg_group_get_traffic_class_a(
> +				group));
> +		if (!jobj)
> +			goto err;
> +	}
> 
>  	json_object_object_add(jgroup, "traffic_class_a", jobj);
>  	jobj = json_object_new_int(accfg_group_get_traffic_class_b(
> diff --git a/util/json.c b/util/json.c
> index 3bf8950..bb3ee88 100644
> --- a/util/json.c
> +++ b/util/json.c
> @@ -178,7 +178,8 @@ struct json_object *util_device_to_json(struct
> accfg_device *device,
>  	jobj = json_object_new_int(accfg_device_get_token_limit(device));
>  	if (!jobj)
>  		goto err;
> -	json_object_object_add(jdevice, "token_limit", jobj);
> +	if (accfg_device_get_type(device) != ACCFG_DEVICE_IAX)
> +		json_object_object_add(jdevice, "token_limit", jobj);
> 
>  	if (flags & UTIL_JSON_SAVE) {
>  		free(error);
> @@ -277,7 +278,8 @@ struct json_object *util_device_to_json(struct
> accfg_device *device,
>  	jobj =
> json_object_new_int(accfg_device_get_max_tokens(device));
>  	if (!jobj)
>  		goto err;
> -	json_object_object_add(jdevice, "max_tokens", jobj);
> +	if (accfg_device_get_type(device) != ACCFG_DEVICE_IAX)
> +		json_object_object_add(jdevice, "max_tokens", jobj);
> 
>  	ulong_val = accfg_device_get_max_batch_size(device);
>  	if (ulong_val > 0) {
> @@ -353,8 +355,12 @@ struct json_object *util_wq_to_json(struct
> accfg_wq *wq,
>  	unsigned long size = ULLONG_MAX;
>  	enum accfg_wq_mode wq_mode;
>  	enum accfg_wq_state wq_state;
> +	struct accfg_device *dev = NULL;
>  	int int_val;
> 
> +	if (wq)
> +		dev = accfg_wq_get_device(wq);
> +
>  	if (!jaccfg)
>  		return NULL;
> 
> @@ -396,8 +402,10 @@ struct json_object *util_wq_to_json(struct
> accfg_wq *wq,
>  	}
> 
>  	jobj = json_object_new_int(accfg_wq_get_block_on_fault(wq));
> -	if (jobj)
> -		json_object_object_add(jaccfg, "block_on_fault", jobj);
> +	if (jobj) {
> +		if (accfg_device_get_type(dev) != ACCFG_DEVICE_IAX)
> +			json_object_object_add(jaccfg, "block_on_fault",
> jobj);
> +	}
> 
>  	jobj = json_object_new_int(accfg_wq_get_max_batch_size(wq));
>  	if (jobj)
> --
> 2.26.2

^ permalink raw reply	[flat|nested] 2+ messages in thread

* [Accel-config] Re: [PATCH v1] accel-config/libaccel-config: Add IAX support
@ 2020-11-18 17:56 Luck, Tony
  0 siblings, 0 replies; 2+ messages in thread
From: Luck, Tony @ 2020-11-18 17:56 UTC (permalink / raw)
  To: accel-config

[-- Attachment #1: Type: text/plain, Size: 482 bytes --]

> From: Ramesh Thomas <ramesh.thomas(a)intel.com>
> 
> Add Intel Analytics Accelerator support.

Looks fine (with the change that Dave noted).

[If we ever get a third accelerator that needs support, we might want to look
at a more JSON'y attribute way to deal with device differences. This looks OK
with just a handful of "if (IAX)" special cases. But would get ugly fast if there
a multiple devices each with their own set of supported attribute files in sysfs].

-Tony

^ permalink raw reply	[flat|nested] 2+ messages in thread

end of thread, other threads:[~2020-11-18 17:56 UTC | newest]

Thread overview: 2+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2020-11-18 17:46 [Accel-config] Re: [PATCH v1] accel-config/libaccel-config: Add IAX support Jiang, Dave
2020-11-18 17:56 Luck, Tony

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.