* [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.