Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package accel-config for openSUSE:Factory checked in at 2021-04-26 16:39:50 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/accel-config (Old) and /work/SRC/openSUSE:Factory/.accel-config.new.12324 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "accel-config" Mon Apr 26 16:39:50 2021 rev:3 rq:888494 version:3.1 Changes: -------- --- /work/SRC/openSUSE:Factory/accel-config/accel-config.changes 2021-02-15 23:19:16.551662461 +0100 +++ /work/SRC/openSUSE:Factory/.accel-config.new.12324/accel-config.changes 2021-04-26 16:40:51.334196892 +0200 @@ -1,0 +2,14 @@ +Mon Apr 26 09:57:42 UTC 2021 - Ferdinand Thiessen <r...@fthiessen.de> + +- Update to version 3.1 + * Improved error messages and return values + * Fix incorrect error return value from tool + * Allow -1 special value for wq->groupid and fix related error + messages + * Fix incorrect manpage text for config-wq + * Remove reference to non-interface header in interface header + * Remove non-interface header from packaging + * Use portable data types and fix build issues in 32 bit targets +- Dropped upstream merged v3.0.1-use-portable-data-types.patch + +------------------------------------------------------------------- Old: ---- accel-config-v3.0.1.tar.gz v3.0.1-use-portable-data-types.patch New: ---- accel-config-v3.1.tar.gz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ accel-config.spec ++++++ --- /var/tmp/diff_new_pack.pj8lJ3/_old 2021-04-26 16:40:51.738197556 +0200 +++ /var/tmp/diff_new_pack.pj8lJ3/_new 2021-04-26 16:40:51.742197563 +0200 @@ -19,13 +19,12 @@ %define pkg_libname libaccel-config1 Name: accel-config -Version: 3.0.1 +Version: 3.1 Release: 0 Summary: Configure accelerator subsystem devices License: GPL-2.0-only URL: https://github.com/intel/idxd-config Source: https://github.com/intel/idxd-config/archive/accel-config-v%{version}.tar.gz -Patch0: v3.0.1-use-portable-data-types.patch BuildRequires: asciidoc BuildRequires: autoconf BuildRequires: automake @@ -65,7 +64,6 @@ %prep %setup -q -n idxd-config-accel-config-v%{version} -%autopatch -p1 %build echo %{version} > version ++++++ accel-config-v3.0.1.tar.gz -> accel-config-v3.1.tar.gz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/Documentation/accfg/accel-config-config-wq.txt new/idxd-config-accel-config-v3.1/Documentation/accfg/accel-config-config-wq.txt --- old/idxd-config-accel-config-v3.0.1/Documentation/accfg/accel-config-config-wq.txt 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/Documentation/accfg/accel-config-config-wq.txt 2021-03-27 03:17:56.000000000 +0100 @@ -14,7 +14,7 @@ EXAMPLE ------- -accel-config config-devie dsa0/wq0.0 --wq-size=16 +accel-config config-wq dsa0/wq0.0 --wq-size=16 OPTIONS -------- diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/accel-config.c new/idxd-config-accel-config-v3.1/accfg/accel-config.c --- old/idxd-config-accel-config-v3.0.1/accfg/accel-config.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/accel-config.c 2021-03-27 03:17:56.000000000 +0100 @@ -7,6 +7,7 @@ #include <unistd.h> #include <sys/stat.h> #include <sys/types.h> +#include <libkmod.h> #include <builtin.h> #include <accfg/libaccel_config.h> #include <ccan/array_size/array_size.h> @@ -74,9 +75,34 @@ #endif }; +static int idxd_kmod_init(struct kmod_ctx **ctx, struct kmod_module **mod) +{ + int rc; + + *ctx = kmod_new(NULL, NULL); + if (!*ctx) + return -ENXIO; + + rc = kmod_module_new_from_name(*ctx, "idxd", mod); + if (rc < 0) { + kmod_unref(*ctx); + return rc; + } + + rc = kmod_module_get_initstate(*mod); + if (rc < 0) { + kmod_module_unref(*mod); + kmod_unref(*ctx); + } + + return rc; +} + int main(int argc, const char **argv) { struct accfg_ctx *ctx; + struct kmod_ctx *kmod_ctx; + struct kmod_module *mod; int rc; /* Look for flags.. */ @@ -95,12 +121,30 @@ return 0; } + rc = idxd_kmod_init(&kmod_ctx, &mod); + if (rc < 0) { + fprintf(stderr, "Failed initializing kernel module\n"); + goto error_exit; + } + rc = accfg_new(&ctx); - if (rc) - return 0; - main_handle_internal_command(argc, argv, ctx, commands, + if (rc) { + kmod_module_unref(mod); + kmod_unref(kmod_ctx); + goto error_exit; + } + + rc = main_handle_internal_command(argc, argv, ctx, commands, ARRAY_SIZE(commands)); accfg_unref(ctx); - fprintf(stderr, "Unknown command: '%s'\n", argv[0]); - return -EINVAL; + kmod_module_unref(mod); + kmod_unref(kmod_ctx); + + if (!rc) + return EXIT_SUCCESS; +error_exit: + errno = abs(rc); + perror("Error"); + + return EXIT_FAILURE; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/config.c new/idxd-config-accel-config-v3.1/accfg/config.c --- old/idxd-config-accel-config-v3.0.1/accfg/config.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/config.c 2021-03-27 03:17:56.000000000 +0100 @@ -32,9 +32,9 @@ char *buf; } config; -static unsigned long config_opts_to_flags(void) +static uint64_t config_opts_to_flags(void) { - unsigned long flags = 0; + uint64_t flags = 0; return flags; } @@ -47,7 +47,7 @@ struct wq_set_table { char *name; int (*set_int_func)(struct accfg_wq *wq, int val); - int (*set_long_func)(struct accfg_wq *wq, unsigned long val); + int (*set_long_func)(struct accfg_wq *wq, uint64_t val); int (*set_str_func)(struct accfg_wq *wq, const char *val); bool (*is_writable)(struct accfg_wq *wq, int val); }; @@ -259,7 +259,7 @@ return 0; } else if (wq_table[i].set_long_func) { - unsigned long val = json_object_get_int64(jobj); + uint64_t val = json_object_get_int64(jobj); if ((val == 0) && (errno == EINVAL)) return -errno; @@ -563,7 +563,7 @@ } static struct json_object *config_group_to_json(struct accfg_group *group, - unsigned long flags) + uint64_t flags) { struct json_object *jgroup = json_object_new_object(); struct json_object *jobj = NULL; @@ -819,7 +819,7 @@ struct list_filter_arg *lfa = ctx->list; struct json_object *jgroup; struct json_object *container = lfa->jdevice; - unsigned long group_id; + uint64_t group_id; struct accfg_device *dev = accfg_group_get_device(group); int max_groups = accfg_device_get_max_groups(dev); struct accfg_json_container *jc = NULL, *iter; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/config_attr.c new/idxd-config-accel-config-v3.1/accfg/config_attr.c --- old/idxd-config-accel-config-v3.0.1/accfg/config_attr.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/config_attr.c 2021-03-27 03:17:56.000000000 +0100 @@ -133,8 +133,9 @@ static int accel_config_parse_wq_attribs(struct accfg_device *device, struct accfg_wq *wq, struct wq_parameters *wq_params) { - unsigned int max_groups, max_wq_size, max_batch_size; - unsigned long max_transfer_size; + int max_groups; + unsigned int max_wq_size, max_batch_size; + uint64_t max_transfer_size; int rc = 0; if (wq_params->mode) { @@ -158,10 +159,11 @@ return -EINVAL; } - if (((unsigned int)wq_params->group_id >= max_groups) - && (wq_params->group_id != INT_MAX)) { + if ((wq_params->group_id >= max_groups) && + (wq_params->group_id != INT_MAX)) { fprintf(stderr, - "valid group_id should be 0 to %d\n", max_groups-1); + "valid group id should be 0 to %d or -1 to dissociate the wq from groups\n", + max_groups-1); return -EINVAL; } @@ -184,7 +186,7 @@ || wq_params->max_transfer_size > max_transfer_size) && (wq_params->max_transfer_size != INT_MAX)) { fprintf(stderr, - "valid max-transfer-size should be 1 to %ld\n", max_transfer_size); + "valid max-transfer-size should be 1 to %" PRIu64 "\n", max_transfer_size); return -EINVAL; } @@ -260,8 +262,9 @@ max_groups = accfg_device_get_max_groups(device); if (engine_params->group_id >= max_groups) { - fprintf(stderr, "valid engine_id should be 0 to %d\n", - max_groups - 1); + fprintf(stderr, + "valid group id should be 0 to %d or -1 to dissociate from groups\n", + max_groups - 1); return -EINVAL; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/enable.c new/idxd-config-accel-config-v3.1/accfg/enable.c --- old/idxd-config-accel-config-v3.0.1/accfg/enable.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/enable.c 2021-03-27 03:17:56.000000000 +0100 @@ -81,6 +81,17 @@ } } +static void print_device_cmd_status(struct accfg_device *device) +{ + const char *status; + + if (accfg_device_get_cmd_status(device) > 0) { + status = accfg_device_get_cmd_status_str(device); + if (status) + fprintf(stderr, "device command status: %s\n", status); + } +} + static int device_action(int argc, const char **argv, const char *usage, const struct option *options, enum dev_action action, struct accfg_ctx *ctx) @@ -89,7 +100,7 @@ usage, NULL }; - int i, rc = 0, success = 0, fail = 0, fail_reason = 0; + int i, rc = -EINVAL, success = 0; const char *all = "all"; enum accfg_device_state state; @@ -128,20 +139,18 @@ * matches with the enable/disable */ state = accfg_device_get_state(device); - if (((state == 1) && (action == DEV_ACTION_ENABLE)) - ||((state == 0) && (action == DEV_ACTION_DISABLE))) - success++; - else - fail++; - } else if (!fail) { - const char *status; - - fail_reason = rc; + if (((state != ACCFG_DEVICE_ENABLED) && + (action == DEV_ACTION_ENABLE)) || + ((state != ACCFG_DEVICE_DISABLED) && + (action == DEV_ACTION_DISABLE))) + rc = ENXIO; + } + if (rc == 0) { + success++; + } else { fprintf(stderr, "failed in %s\n", argv[i]); - status = accfg_device_get_cmd_status_str(device); - if (status) - fprintf(stderr, "device cmd err: %s.\n", status); + print_device_cmd_status(device); } } @@ -150,33 +159,14 @@ argv[i]); } - if (success) { - if (action == DEV_ACTION_ENABLE) - fprintf(stderr, "successfully enabled %d device%s\n", - success, success > 1 ? "s" : ""); - else - fprintf(stderr, "successfully disabled %d device%s\n", - success, success > 1 ? "s" : ""); - return success; - } - - if (fail) { - if (action == DEV_ACTION_ENABLE) - fprintf(stderr, "failed to enable %d device%s\n", fail, - fail > 1 ? "s" : ""); - else - fprintf(stderr, "failed to disable %d device%s\n", fail, - fail > 1 ? "s" : ""); + fprintf(stderr, "%s %d device(s) out of %d\n", + action == DEV_ACTION_ENABLE ? "enabled" : "disabled", + success, argc); - return fail; - } + if (success) + return 0; - if (fail_reason) { - fprintf(stderr, "failed due to reason %d\n", fail_reason); - return fail_reason; - } - - return -ENXIO; + return rc; } static int action_disable_wq(struct accfg_wq *wq, const char *wq_name) @@ -236,10 +226,9 @@ usage, NULL }; - unsigned long dev_id, wq_id; - int i, rc = 0, success = 0, fail = 0, fail_reason = 0; + uint64_t dev_id, wq_id; + int i, rc = -EINVAL, success = 0; const char *all = "all"; - enum accfg_wq_state state; argc = parse_options(argc, argv, options, u, 0); @@ -263,7 +252,8 @@ char dev_name[MAX_DEV_LEN], wq_name[MAX_DEV_LEN]; int found = 0; - if (sscanf(argv[i], "%[^/]/wq%lu.%lu", dev_name, &dev_id, &wq_id) != 3) { + if (sscanf(argv[i], "%[^/]/wq%" SCNu64 ".%" SCNu64, + dev_name, &dev_id, &wq_id) != 3) { fprintf(stderr, "'%s' is not a valid wq name\n", argv[i]); return -EINVAL; @@ -272,9 +262,9 @@ if (!accfg_device_type_validate(dev_name)) return -EINVAL; - rc = sprintf(wq_name, "wq%lu.%lu", dev_id, wq_id); + rc = sprintf(wq_name, "wq%" PRIu64 ".%" PRIu64, dev_id, wq_id); if (rc < 0) - return errno; + return rc; accfg_device_foreach(ctx, device) { if (!util_device_filter(device, dev_name)) @@ -285,24 +275,11 @@ found++; rc = wq_action_switch(wq, action, wq_name); if (rc == 0) { - /* - * Double check if the state of the - * wq matches with the enable/disable - */ - state = accfg_wq_get_state(wq); - if (((state == 1) && (action == WQ_ACTION_ENABLE)) - ||((state == 0) && (action == WQ_ACTION_DISABLE))) - success++; - else - fail++; - } else if (!fail) { - const char *status; - - fail_reason = rc; + success++; + } else { fprintf(stderr, "failed in %s\n", wq_name); - status = accfg_device_get_cmd_status_str(device); - if (status) - fprintf(stderr, "device cmd err: %s.\n", status); + + print_device_cmd_status(device); } } } @@ -311,34 +288,14 @@ fprintf(stderr, "no wq matches id: %s\n", wq_name); } - if (success) { - if (action == WQ_ACTION_ENABLE) - fprintf(stderr, "successfully enabled %d wq%s\n", - success, - success > 1 ? "s" : ""); - else - fprintf(stderr, "successfully disabled %d wq%s\n", - success, - success > 1 ? "s" : ""); - return success; - } + fprintf(stderr, "%s %d wq(s) out of %d\n", + action == WQ_ACTION_ENABLE ? "enabled" : "disabled", + success, argc); - if (fail) { - if (action == WQ_ACTION_ENABLE) - fprintf(stderr, "failed to enable %d wq%s\n", - fail, fail > 1 ? "s" : ""); - else - fprintf(stderr, "failed to disable %d wq%s\n", - fail, fail > 1 ? "s" : ""); - return fail; - } + if (success) + return 0; - if (fail_reason) { - fprintf(stderr, "failed due to reason %d\n", - fail_reason); - return fail_reason; - } - return -ENXIO; + return rc; } int cmd_disable_device(int argc, const char **argv, void *ctx) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/lib/Makefile.am new/idxd-config-accel-config-v3.1/accfg/lib/Makefile.am --- old/idxd-config-accel-config-v3.0.1/accfg/lib/Makefile.am 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/lib/Makefile.am 2021-03-27 03:17:56.000000000 +0100 @@ -3,7 +3,7 @@ %.pc: %.pc.in Makefile $(SED_PROCESS) -pkginclude_HEADERS = ../libaccel_config.h ../accfg.h +pkginclude_HEADERS = ../libaccel_config.h lib_LTLIBRARIES = libaccel-config.la DISTCLEANFILES = config.h diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/lib/libaccfg.c new/idxd-config-accel-config-v3.1/accfg/lib/libaccfg.c --- old/idxd-config-accel-config-v3.0.1/accfg/lib/libaccfg.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/lib/libaccfg.c 2021-03-27 03:17:56.000000000 +0100 @@ -54,6 +54,7 @@ }; const char *accfg_device_cmd_status[] = { + [0x0] = "Successful completion", [0x1] = "Invalid command code", [0x2] = "Invalid WQ index", [0x3] = "Internal or platform hardware error", @@ -109,7 +110,7 @@ return strtol(buf, NULL, 0); } -static unsigned long long accfg_get_param_unsigned_llong( +static uint64_t accfg_get_param_unsigned_llong( struct accfg_ctx *ctx, int dfd, char *name) { int fd = openat(dfd, name, O_RDONLY); @@ -317,13 +318,13 @@ env = secure_getenv("ACCFG_TIMEOUT"); if (env != NULL) { - unsigned long tmo; + uint64_t tmo; char *end; tmo = strtoul(env, &end, 0); if (tmo < ULONG_MAX && !end) c->timeout = tmo; - dbg(c, "timeout = %ld\n", tmo); + dbg(c, "timeout = %" PRIu64 "\n", tmo); } return 0; @@ -642,7 +643,7 @@ struct accfg_ctx *ctx; char *path; char *wq_base_string; - unsigned long device_id, wq_id; + uint64_t device_id, wq_id; int dfd; char *wq_type; @@ -678,7 +679,7 @@ } if (sscanf(basename(wq_base_string), - "wq%ld.%ld", &device_id, &wq_id) != 2) { + "wq%" SCNu64 ".%" SCNu64, &device_id, &wq_id) != 2) { close(dfd); goto err_wq; } @@ -739,7 +740,7 @@ char *path; char *group_base_string; int dfd; - unsigned long device_id, group_id; + uint64_t device_id, group_id; if (!device) return NULL; @@ -770,7 +771,7 @@ goto err_group; } if (sscanf(basename(group_base_string), - "group%ld.%ld", &device_id, &group_id) != 2) { + "group%" SCNu64 ".%" SCNu64, &device_id, &group_id) != 2) { free(group); close(dfd); goto err_group; @@ -828,7 +829,7 @@ char *path; char *engine_base_string; int dfd; - unsigned long device_id, engine_id; + uint64_t device_id, engine_id; if (!device) return NULL; @@ -861,7 +862,7 @@ goto err_engine; } if (sscanf(basename(engine_base_string), - "engine%ld.%ld", &device_id, &engine_id) != 2) { + "engine%" SCNu64 ".%" SCNu64, &device_id, &engine_id) != 2) { close(dfd); free(path); free(engine); @@ -911,10 +912,26 @@ return !strncmp(filename_prefix, d->d_name, filename_prefix_len); } +static void groups_init(struct accfg_device *device) +{ + struct accfg_ctx *ctx = device->ctx; + + if (device->group_init) { + dbg(ctx, "group is initialized already\n"); + return; + } + device->group_init = 1; + set_filename_prefix("group"); + device_parse(device->ctx, device->device_path, "group", + filter_file_name_prefix, + device, add_group); +} + static void devices_init(struct accfg_ctx *ctx) { char **accel_name; char *path; + struct accfg_device *device; if (ctx->devices_init) { dbg(ctx, "device is initialized already\n"); @@ -933,21 +950,10 @@ filter_file_name_prefix, ctx, add_device); free(path); } -} -static void groups_init(struct accfg_device *device) -{ - struct accfg_ctx *ctx = device->ctx; - - if (device->group_init) { - dbg(ctx, "group is intialized already\n"); - return; + accfg_device_foreach(ctx, device) { + groups_init(device); } - device->group_init = 1; - set_filename_prefix("group"); - device_parse(device->ctx, device->device_path, "group", - filter_file_name_prefix, - device, add_group); } static void engines_init(struct accfg_device *device) @@ -1200,19 +1206,19 @@ return device->max_batch_size; } -ACCFG_EXPORT unsigned long accfg_device_get_max_transfer_size( +ACCFG_EXPORT uint64_t accfg_device_get_max_transfer_size( struct accfg_device *device) { return device->max_transfer_size; } -ACCFG_EXPORT unsigned long accfg_device_get_op_cap( +ACCFG_EXPORT uint64_t accfg_device_get_op_cap( struct accfg_device *device) { return device->opcap; } -ACCFG_EXPORT unsigned long accfg_device_get_gen_cap(struct accfg_device *device) +ACCFG_EXPORT uint64_t accfg_device_get_gen_cap(struct accfg_device *device) { return device->gencap; } @@ -1252,7 +1258,7 @@ return -errno; read_error = accfg_get_param_str(ctx, dfd, "errors"); close(dfd); - rc = sscanf(read_error, "%lx %lx %lx %lx", + rc = sscanf(read_error, "%" SCNx64 " %" SCNx64 " %" SCNx64 " %" SCNx64, &error->val[0], &error->val[1], &error->val[2], &error->val[3]); if (rc < 0) { @@ -1429,6 +1435,7 @@ char *path; int len; char buf[SYSFS_ATTR_SIZE], *end_ptr; + int rc; if (!device) return -EINVAL; @@ -1440,20 +1447,16 @@ if (snprintf(path, len, "%s/cmd_status", device->device_path) >= len) { err(ctx, "%s: buffer too small!\n", accfg_device_get_devname(device)); - return 0; + return -ENOMEM; } - if (sysfs_read_attr(ctx, path, buf) < 0) - return 0; + rc = sysfs_read_attr(ctx, path, buf); + if (rc < 0) + return rc; status = strtol(buf, &end_ptr, 0); - if ((errno == ERANGE && (status == LONG_MAX || status == LONG_MIN)) || - (errno != 0 && status == 0)) - return -ERANGE; - - /* Nothing was found */ - if (end_ptr == buf) - return -ENXIO; + if (errno == ERANGE || end_ptr == buf) + return -EIO; return (int)status; } @@ -1461,20 +1464,12 @@ ACCFG_EXPORT const char * accfg_device_get_cmd_status_str(struct accfg_device *device) { int status; - const char *stat_str; status = accfg_device_get_cmd_status(device); - if (status < 0) - return NULL; - - if (status > ACCFG_CMD_STATUS_MAX) - return NULL; - - stat_str = accfg_device_cmd_status[status]; - if (strlen(stat_str) == 0) + if (status < 0 || status >= ACCFG_CMD_STATUS_MAX) return NULL; - return stat_str; + return accfg_device_cmd_status[status]; } /* Helper function to validate device type in the defined device array based on @@ -1621,12 +1616,12 @@ return devpath_to_devname(group->group_path); } -ACCFG_EXPORT unsigned long accfg_group_get_size(struct accfg_group *group) +ACCFG_EXPORT uint64_t accfg_group_get_size(struct accfg_group *group) { return group->size; } -ACCFG_EXPORT unsigned long accfg_group_get_available_size( +ACCFG_EXPORT uint64_t accfg_group_get_available_size( struct accfg_group *group) { struct accfg_ctx *ctx = accfg_group_get_ctx(group); @@ -1794,7 +1789,7 @@ return wq->name; } -ACCFG_EXPORT unsigned long accfg_wq_get_size(struct accfg_wq *wq) +ACCFG_EXPORT uint64_t accfg_wq_get_size(struct accfg_wq *wq) { return wq->size; } @@ -1804,7 +1799,7 @@ return wq->max_batch_size; } -ACCFG_EXPORT unsigned long accfg_wq_get_max_transfer_size(struct accfg_wq *wq) +ACCFG_EXPORT uint64_t accfg_wq_get_max_transfer_size(struct accfg_wq *wq) { return wq->max_transfer_size; } @@ -2091,7 +2086,7 @@ #define accfg_wq_set_long_field(wq, val, field) \ ACCFG_EXPORT int accfg_wq_set_##field( \ - struct accfg_wq *wq, unsigned long val) \ + struct accfg_wq *wq, uint64_t val) \ { \ struct accfg_ctx *ctx = accfg_wq_get_ctx(wq); \ char *path = wq->wq_buf; \ @@ -2100,7 +2095,7 @@ rc = sprintf(wq->wq_buf, "%s/%s", wq->wq_path, #field); \ if (rc < 0) \ return -errno; \ - if (sprintf(buf, "%ld", val) < 0) { \ + if (sprintf(buf, "%" PRIu64, val) < 0) { \ err(ctx, "%s: sprintf to buf failed: %s\n", \ accfg_wq_get_devname(wq), \ strerror(errno)); \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/lib/private.h new/idxd-config-accel-config-v3.1/accfg/lib/private.h --- old/idxd-config-accel-config-v3.0.1/accfg/lib/private.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/lib/private.h 2021-03-27 03:17:56.000000000 +0100 @@ -51,9 +51,9 @@ unsigned int token_limit; unsigned int cdev_major; unsigned int version; - unsigned long max_transfer_size; - unsigned long opcap; - unsigned long gencap; + uint64_t max_transfer_size; + uint64_t opcap; + uint64_t gencap; char *pasid_enabled; }; @@ -124,7 +124,7 @@ enum accfg_wq_type type; char *state; unsigned int max_batch_size; - unsigned long max_transfer_size; + uint64_t max_transfer_size; }; #define ACCFG_EXPORT __attribute__ ((visibility("default"))) @@ -144,7 +144,7 @@ int devices_init; int groups_init; struct list_head devices; - unsigned long timeout; + uint64_t timeout; void *private_data; }; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/libaccel_config.h new/idxd-config-accel-config-v3.1/accfg/libaccel_config.h --- old/idxd-config-accel-config-v3.0.1/accfg/libaccel_config.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/libaccel_config.h 2021-03-27 03:17:56.000000000 +0100 @@ -11,7 +11,6 @@ #include <errno.h> #include <limits.h> #include <uuid/uuid.h> -#include <util/filter.h> #ifdef __cplusplus extern "C" { @@ -102,7 +101,7 @@ unsigned int priority; int block_on_fault; unsigned int max_batch_size; - unsigned long max_transfer_size; + uint64_t max_transfer_size; const char *mode; const char *type; const char *name; @@ -167,9 +166,9 @@ int accfg_device_get_numa_node(struct accfg_device *device); unsigned int accfg_device_get_ims_size(struct accfg_device *device); unsigned int accfg_device_get_max_batch_size(struct accfg_device *device); -unsigned long accfg_device_get_max_transfer_size(struct accfg_device *device); -unsigned long accfg_device_get_op_cap(struct accfg_device *device); -unsigned long accfg_device_get_gen_cap(struct accfg_device *device); +uint64_t accfg_device_get_max_transfer_size(struct accfg_device *device); +uint64_t accfg_device_get_op_cap(struct accfg_device *device); +uint64_t accfg_device_get_gen_cap(struct accfg_device *device); unsigned int accfg_device_get_configurable(struct accfg_device *device); bool accfg_device_get_pasid_enabled(struct accfg_device *device); bool accfg_device_get_mdev_enabled(struct accfg_device *device); @@ -213,8 +212,8 @@ int id); int accfg_group_get_device_id(struct accfg_group *group); const char *accfg_group_get_devname(struct accfg_group *group); -unsigned long accfg_group_get_size(struct accfg_group *group); -unsigned long accfg_group_get_available_size(struct accfg_group *group); +uint64_t accfg_group_get_size(struct accfg_group *group); +uint64_t accfg_group_get_available_size(struct accfg_group *group); struct accfg_device *accfg_group_get_device(struct accfg_group *group); struct accfg_ctx *accfg_group_get_ctx(struct accfg_group *group); int accfg_group_get_tokens_reserved(struct accfg_group *group); @@ -247,7 +246,7 @@ int id); const char *accfg_wq_get_devname(struct accfg_wq *wq); enum accfg_wq_mode accfg_wq_get_mode(struct accfg_wq *wq); -unsigned long accfg_wq_get_size(struct accfg_wq *wq); +uint64_t accfg_wq_get_size(struct accfg_wq *wq); int accfg_wq_get_group_id(struct accfg_wq *wq); int accfg_wq_get_priority(struct accfg_wq *wq); unsigned int accfg_wq_get_priv(struct accfg_wq *wq); @@ -257,7 +256,7 @@ const char *accfg_wq_get_type_name(struct accfg_wq *wq); enum accfg_wq_type accfg_wq_get_type(struct accfg_wq *wq); unsigned int accfg_wq_get_max_batch_size(struct accfg_wq *wq); -unsigned long accfg_wq_get_max_transfer_size(struct accfg_wq *wq); +uint64_t accfg_wq_get_max_transfer_size(struct accfg_wq *wq); int accfg_wq_get_threshold(struct accfg_wq *wq); int accfg_wq_get_clients(struct accfg_wq *wq); int accfg_wq_is_enabled(struct accfg_wq *wq); @@ -267,7 +266,7 @@ int accfg_wq_set_threshold(struct accfg_wq *wq, int val); int accfg_wq_set_block_on_fault(struct accfg_wq *wq, int val); int accfg_wq_set_max_batch_size(struct accfg_wq *wq, int val); -int accfg_wq_set_max_transfer_size(struct accfg_wq *wq, unsigned long val); +int accfg_wq_set_max_transfer_size(struct accfg_wq *wq, uint64_t val); int accfg_wq_set_str_mode(struct accfg_wq *wq, const char* val); int accfg_wq_set_mode(struct accfg_wq *wq, enum accfg_wq_mode mode); int accfg_wq_set_str_type(struct accfg_wq *wq, const char* val); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/accfg/list.c new/idxd-config-accel-config-v3.1/accfg/list.c --- old/idxd-config-accel-config-v3.0.1/accfg/list.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/accfg/list.c 2021-03-27 03:17:56.000000000 +0100 @@ -25,9 +25,9 @@ bool save_conf; } list; -static unsigned long listopts_to_flags(void) +static uint64_t listopts_to_flags(void) { - unsigned long flags = 0; + uint64_t flags = 0; if (list.idle) flags |= UTIL_JSON_IDLE; @@ -50,7 +50,7 @@ } while (0) static struct json_object *group_to_json(struct accfg_group *group, - unsigned long flags) + uint64_t flags) { struct json_object *jgroup = json_object_new_object(); struct json_object *jobj = NULL; @@ -249,7 +249,7 @@ static bool filter_group(struct accfg_group *group, struct util_filter_ctx *ctx) { - unsigned long group_id; + uint64_t group_id; struct list_filter_arg *lfa = ctx->list; struct json_object *jgroup; struct json_object *container = lfa->jdevice; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/ccan/endian/endian.h new/idxd-config-accel-config-v3.1/ccan/endian/endian.h --- old/idxd-config-accel-config-v3.0.1/ccan/endian/endian.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/ccan/endian/endian.h 2021-03-27 03:17:56.000000000 +0100 @@ -95,7 +95,7 @@ * Example: * // Output contains "1024 is 1125899906842624 as eight bytes reversed" * printf("1024 is %llu as eight bytes reversed\n", - * (unsigned long long)bswap_64(1024)); + * (uint64_t long)bswap_64(1024)); */ static inline uint64_t bswap_64(uint64_t val) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/git-version new/idxd-config-accel-config-v3.1/git-version --- old/idxd-config-accel-config-v3.0.1/git-version 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/git-version 2021-03-27 03:17:56.000000000 +0100 @@ -19,7 +19,7 @@ fi } -DEF_VER=3.0.1 +DEF_VER=3.1 LF=' ' diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/test/common new/idxd-config-accel-config-v3.1/test/common --- old/idxd-config-accel-config-v3.0.1/test/common 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/test/common 2021-03-27 03:17:56.000000000 +0100 @@ -99,7 +99,14 @@ # _cleanup() { - modprobe -r idxd + lsmod | grep -q "idxd_mdev" && { + modprobe -r idxd_mdev + sleep 1 + } + lsmod | grep -q "idxd" && { + modprobe -r idxd + sleep 1 + } modprobe idxd } @@ -158,4 +165,4 @@ echo "UNKNOWN" ;; esac -} \ No newline at end of file +} diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/test/dsa.c new/idxd-config-accel-config-v3.1/test/dsa.c --- old/idxd-config-accel-config-v3.0.1/test/dsa.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/test/dsa.c 2021-03-27 03:17:56.000000000 +0100 @@ -367,7 +367,7 @@ int ret = 0; while (retry_count < 3) { - if (!enqcmd(hw, ctx->wq_reg)) + if (!enqcmd(ctx->wq_reg, hw)) break; info("retry\n"); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/test/dsa.h new/idxd-config-accel-config-v3.1/test/dsa.h --- old/idxd-config-accel-config-v3.0.1/test/dsa.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/test/dsa.h 2021-03-27 03:17:56.000000000 +0100 @@ -4,6 +4,7 @@ #define __TEST_DSA_H__ #include <accfg/libaccel_config.h> #include <linux/idxd.h> +#include "accfg_test.h" #define MAX_PATH_LENGTH 1024 @@ -144,24 +145,6 @@ va_end(args); } -static inline unsigned char enqcmd(struct dsa_hw_desc *desc, - volatile void *reg) -{ - unsigned char retry; - - asm volatile(".byte 0xf2, 0x0f, 0x38, 0xf8, 0x02\t\n" - "setz %0\t\n" - : "=r"(retry) : "a" (reg), "d" (desc)); - return retry; -} - -static inline void movdir64b(struct dsa_hw_desc *desc, - volatile void *reg) -{ - asm volatile(".byte 0x66, 0x0f, 0x38, 0xf8, 0x02\t\n" - : : "a" (reg), "d" (desc)); -} - /* Dump DSA hardware descriptor to log */ static inline void dump_desc(struct dsa_hw_desc *hw) { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/test/prep.c new/idxd-config-accel-config-v3.1/test/prep.c --- old/idxd-config-accel-config-v3.0.1/test/prep.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/test/prep.c 2021-03-27 03:17:56.000000000 +0100 @@ -24,7 +24,7 @@ /* use MOVDIR64B for DWQ */ if (ctx->dedicated) - movdir64b(hw, ctx->wq_reg); + movdir64b(ctx->wq_reg, hw); else /* use ENQCMD for SWQ */ if (dsa_enqcmd(ctx, hw)) usleep(10000); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/bitmap.c new/idxd-config-accel-config-v3.1/util/bitmap.c --- old/idxd-config-accel-config-v3.0.1/util/bitmap.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/bitmap.c 2021-03-27 03:17:56.000000000 +0100 @@ -22,17 +22,17 @@ #include <ccan/minmax/minmax.h> #include <ccan/short_types/short_types.h> -unsigned long *bitmap_alloc(unsigned long nbits) +uint64_t *bitmap_alloc(uint64_t nbits) { - return calloc(BITS_TO_LONGS(nbits), sizeof(unsigned long)); + return calloc(BITS_TO_LONGS(nbits), sizeof(uint64_t)); } -void bitmap_set(unsigned long *map, unsigned int start, int len) +void bitmap_set(uint64_t *map, unsigned int start, int len) { - unsigned long *p = map + BIT_WORD(start); + uint64_t *p = map + BIT_WORD(start); const unsigned int size = start + len; int bits_to_set = BITS_PER_LONG - (start % BITS_PER_LONG); - unsigned long mask_to_set = BITMAP_FIRST_WORD_MASK(start); + uint64_t mask_to_set = BITMAP_FIRST_WORD_MASK(start); while (len - bits_to_set >= 0) { *p |= mask_to_set; @@ -47,12 +47,12 @@ } } -void bitmap_clear(unsigned long *map, unsigned int start, int len) +void bitmap_clear(uint64_t *map, unsigned int start, int len) { - unsigned long *p = map + BIT_WORD(start); + uint64_t *p = map + BIT_WORD(start); const unsigned int size = start + len; int bits_to_clear = BITS_PER_LONG - (start % BITS_PER_LONG); - unsigned long mask_to_clear = BITMAP_FIRST_WORD_MASK(start); + uint64_t mask_to_clear = BITMAP_FIRST_WORD_MASK(start); while (len - bits_to_clear >= 0) { *p &= ~mask_to_clear; @@ -72,7 +72,7 @@ * @nr: bit number to test * @addr: Address to start counting from */ -int test_bit(unsigned int nr, const volatile unsigned long *addr) +int test_bit(unsigned int nr, const volatile uint64_t *addr) { return 1UL & (addr[BIT_WORD(nr)] >> (nr & (BITS_PER_LONG-1))); } @@ -82,10 +82,10 @@ * find_next_zero_bit. The difference is the "invert" argument, which * is XORed with each fetched word before searching it for one bits. */ -static unsigned long _find_next_bit(const unsigned long *addr, - unsigned long nbits, unsigned long start, unsigned long invert) +static uint64_t _find_next_bit(const uint64_t *addr, + uint64_t nbits, uint64_t start, uint64_t invert) { - unsigned long tmp; + uint64_t tmp; if (!nbits || start >= nbits) return nbits; @@ -110,19 +110,19 @@ /* * Find the next set bit in a memory region. */ -unsigned long find_next_bit(const unsigned long *addr, unsigned long size, - unsigned long offset) +uint64_t find_next_bit(const uint64_t *addr, uint64_t size, + uint64_t offset) { return _find_next_bit(addr, size, offset, 0UL); } -unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, - unsigned long offset) +uint64_t find_next_zero_bit(const uint64_t *addr, uint64_t size, + uint64_t offset) { return _find_next_bit(addr, size, offset, ~0UL); } -int bitmap_full(const unsigned long *src, unsigned int nbits) +int bitmap_full(const uint64_t *src, unsigned int nbits) { if (small_const_nbits(nbits)) return ! (~(*src) & BITMAP_LAST_WORD_MASK(nbits)); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/bitmap.h new/idxd-config-accel-config-v3.1/util/bitmap.h --- old/idxd-config-accel-config-v3.0.1/util/bitmap.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/bitmap.h 2021-03-27 03:17:56.000000000 +0100 @@ -21,15 +21,15 @@ #define small_const_nbits(nbits) \ (__builtin_constant_p(nbits) && (nbits) <= BITS_PER_LONG) -unsigned long *bitmap_alloc(unsigned long nbits); -void bitmap_set(unsigned long *map, unsigned int start, int len); -void bitmap_clear(unsigned long *map, unsigned int start, int len); -int test_bit(unsigned int nr, const volatile unsigned long *addr); -unsigned long find_next_bit(const unsigned long *addr, unsigned long size, - unsigned long offset); -unsigned long find_next_zero_bit(const unsigned long *addr, unsigned long size, - unsigned long offset); -int bitmap_full(const unsigned long *src, unsigned int nbits); +uint64_t *bitmap_alloc(uint64_t nbits); +void bitmap_set(uint64_t *map, unsigned int start, int len); +void bitmap_clear(uint64_t *map, unsigned int start, int len); +int test_bit(unsigned int nr, const volatile uint64_t *addr); +uint64_t find_next_bit(const uint64_t *addr, uint64_t size, + uint64_t offset); +uint64_t find_next_zero_bit(const uint64_t *addr, uint64_t size, + uint64_t offset); +int bitmap_full(const uint64_t *src, unsigned int nbits); #endif /* _ACCFG_BITMAP_H_ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/filter.h new/idxd-config-accel-config-v3.1/util/filter.h --- old/idxd-config-accel-config-v3.0.1/util/filter.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/filter.h 2021-03-27 03:17:56.000000000 +0100 @@ -62,7 +62,7 @@ /* linked list node for each list_filter_arg */ struct list_node list; /* flags to indicate command options */ - unsigned long flags; + uint64_t flags; /* track device number during walk-through */ int dev_num; /* track group_num during walk-through */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/json.c new/idxd-config-accel-config-v3.1/util/json.c --- old/idxd-config-accel-config-v3.0.1/util/json.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/json.c 2021-03-27 03:17:56.000000000 +0100 @@ -27,7 +27,7 @@ static int display_size(struct json_object *jobj, struct printbuf *pbuf, int level, int flags) { - unsigned long long bytes = json_object_get_int64(jobj); + uint64_t bytes = json_object_get_int64(jobj); static char buf[128]; int c; @@ -43,7 +43,7 @@ */ if (bytes < 5000 * 1024) - snprintf(buf, sizeof(buf), "%lld", bytes); + snprintf(buf, sizeof(buf), "%" PRIu64, bytes); else { /* IEC */ if (bytes < 2 * 1024LL * 1024LL * 1024LL) { @@ -78,14 +78,14 @@ static int display_hex(struct json_object *jobj, struct printbuf *pbuf, int level, int flags) { - unsigned long long val = json_object_get_int64(jobj); + uint64_t val = json_object_get_int64(jobj); static char buf[32]; - snprintf(buf, sizeof(buf), "\"%#llx\"", val); + snprintf(buf, sizeof(buf), "\"%#" PRIx64 "\"", val); return printbuf_memappend(pbuf, buf, strlen(buf)); } -struct json_object *util_json_object_size(unsigned long long size, - unsigned long flags) +struct json_object *util_json_object_size(uint64_t size, + uint64_t flags) { struct json_object *jobj = json_object_new_int64(size); @@ -94,8 +94,8 @@ return jobj; } -struct json_object *util_json_object_hex(unsigned long long val, - unsigned long flags) +struct json_object *util_json_object_hex(uint64_t val, + uint64_t flags) { struct json_object *jobj = json_object_new_int64(val); @@ -106,7 +106,7 @@ /* API used to output json object display to console */ void util_display_json_array(FILE * f_out, struct json_object *jarray, - unsigned long flags) + uint64_t flags) { int len = json_object_array_length(jarray); int jflag = JSON_C_TO_STRING_PRETTY; @@ -125,7 +125,7 @@ /* API used to output json object display to specified file */ void __util_display_json_array(FILE * fd, struct json_object *jarray, - unsigned long flags) + uint64_t flags) { int len = json_object_array_length(jarray); int jflag = JSON_C_TO_STRING_PRETTY; @@ -143,15 +143,15 @@ } struct json_object *util_device_to_json(struct accfg_device *device, - unsigned long flags) + uint64_t flags) { struct json_object *jdevice = json_object_new_object(); struct json_object *jobj; struct accfg_error *error; enum accfg_device_state dev_state; int int_val; - unsigned long ulong_val; - unsigned long long ullong_val; + uint64_t ulong_val; + uint64_t ullong_val; bool new_bool; struct accfg_device_mdev *mdev; struct json_object *json_uuid; @@ -386,11 +386,11 @@ } struct json_object *util_wq_to_json(struct accfg_wq *wq, - unsigned long flags) + uint64_t flags) { struct json_object *jaccfg = json_object_new_object(); struct json_object *jobj = NULL; - unsigned long size = ULLONG_MAX; + uint64_t size = ULLONG_MAX; enum accfg_wq_mode wq_mode; enum accfg_wq_state wq_state; int int_val; @@ -501,7 +501,7 @@ } struct json_object *util_engine_to_json(struct accfg_engine *engine, - unsigned long flags) + uint64_t flags) { struct json_object *jaccfg = json_object_new_object(); struct json_object *jobj = NULL; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/json.h new/idxd-config-accel-config-v3.1/util/json.h --- old/idxd-config-accel-config-v3.0.1/util/json.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/json.h 2021-03-27 03:17:56.000000000 +0100 @@ -17,17 +17,17 @@ struct json_object; void util_display_json_array(FILE *f_out, struct json_object *jarray, - unsigned long flags); + uint64_t flags); void __util_display_json_array(FILE *fd, struct json_object *jarray, - unsigned long flags); + uint64_t flags); struct json_object *util_device_to_json(struct accfg_device *device, - unsigned long flags); + uint64_t flags); struct json_object *util_wq_to_json(struct accfg_wq *accfg_wq, - unsigned long flags); + uint64_t flags); struct json_object *util_engine_to_json(struct accfg_engine *accfg_engine, - unsigned long flags); -struct json_object *util_json_object_size(unsigned long long size, - unsigned long flags); -struct json_object *util_json_object_hex(unsigned long long val, - unsigned long flags); + uint64_t flags); +struct json_object *util_json_object_size(uint64_t size, + uint64_t flags); +struct json_object *util_json_object_hex(uint64_t val, + uint64_t flags); #endif /* __ACCFG_JSON_H__ */ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/main.c new/idxd-config-accel-config-v3.1/util/main.c --- old/idxd-config-accel-config-v3.0.1/util/main.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/main.c 2021-03-27 03:17:56.000000000 +0100 @@ -81,44 +81,7 @@ return handled; } -static int run_builtin(struct cmd_struct *p, int argc, const char **argv, - void *ctx) -{ - int status; - struct stat st; - - status = p->fn(argc, argv, ctx); - - if (status) - return status & 0xff; - - /* Somebody closed stdout? */ - if (fstat(fileno(stdout), &st)) - return 0; - /* Ignore write errors for pipes and sockets.. */ - if (S_ISFIFO(st.st_mode) || S_ISSOCK(st.st_mode)) - return 0; - - status = 1; - /* Check for ENOSPC and EIO errors.. */ - if (fflush(stdout)) { - fprintf(stderr, "write failure on standard output: %s", strerror(errno)); - goto out; - } - if (ferror(stdout)) { - fprintf(stderr, "unknown write failure on standard output"); - goto out; - } - if (fclose(stdout)) { - fprintf(stderr, "close failed on standard output: %s", strerror(errno)); - goto out; - } - status = 0; -out: - return status; -} - -void main_handle_internal_command(int argc, const char **argv, void *ctx, +int main_handle_internal_command(int argc, const char **argv, void *ctx, struct cmd_struct *cmds, int num_cmds) { const char *cmd = argv[0]; @@ -134,6 +97,10 @@ struct cmd_struct *p = cmds+i; if (strcmp(p->cmd, cmd)) continue; - exit(run_builtin(p, argc, argv, ctx)); + return p->fn(argc, argv, ctx); } + + fprintf(stderr, "Unknown command: '%s'\n", argv[0]); + + return -EINVAL; } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/main.h new/idxd-config-accel-config-v3.1/util/main.h --- old/idxd-config-accel-config-v3.0.1/util/main.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/main.h 2021-03-27 03:17:56.000000000 +0100 @@ -19,7 +19,7 @@ struct cmd_struct; int main_handle_options(const char ***argv, int *argc, const char *usage_msg, struct cmd_struct *cmds, int num_cmds); -void main_handle_internal_command(int argc, const char **argv, void *ctx, +int main_handle_internal_command(int argc, const char **argv, void *ctx, struct cmd_struct *cmds, int num_cmds); int help_show_man_page(const char *cmd, const char *util_name, const char *viewer); diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/size.c new/idxd-config-accel-config-v3.1/util/size.c --- old/idxd-config-accel-config-v3.0.1/util/size.c 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/size.c 2021-03-27 03:17:56.000000000 +0100 @@ -5,9 +5,9 @@ #include <limits.h> #include <util/size.h> -unsigned long long __parse_size64(const char *str, unsigned long long *units) +uint64_t __parse_size64(const char *str, uint64_t *units) { - unsigned long long val, check; + uint64_t val, check; char *end; val = strtoull(str, &end, 0); @@ -54,7 +54,7 @@ return val; } -unsigned long long parse_size64(const char *str) +uint64_t parse_size64(const char *str) { return __parse_size64(str, NULL); } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/idxd-config-accel-config-v3.0.1/util/size.h new/idxd-config-accel-config-v3.1/util/size.h --- old/idxd-config-accel-config-v3.0.1/util/size.h 2021-02-10 07:20:45.000000000 +0100 +++ new/idxd-config-accel-config-v3.1/util/size.h 2021-03-27 03:17:56.000000000 +0100 @@ -4,6 +4,8 @@ #ifndef _ACCFG_SIZE_H_ #define _ACCFG_SIZE_H_ +#include <stdint.h> + #define SZ_1K 0x00000400 #define SZ_4K 0x00001000 #define SZ_1M 0x00100000 @@ -14,12 +16,12 @@ #define SZ_1G 0x40000000 #define SZ_1T 0x10000000000ULL -unsigned long long parse_size64(const char *str); -unsigned long long __parse_size64(const char *str, unsigned long long *units); +uint64_t parse_size64(const char *str); +uint64_t __parse_size64(const char *str, uint64_t *units); -#define ALIGN(x, a) ((((unsigned long long) x) + (a - 1)) & ~(a - 1)) -#define ALIGN_DOWN(x, a) (((((unsigned long long) x) + a) & ~(a - 1)) - a) -#define BITS_PER_LONG (sizeof(unsigned long) * 8) +#define ALIGN(x, a) ((((uint64_t) x) + (a - 1)) & ~(a - 1)) +#define ALIGN_DOWN(x, a) (((((uint64_t) x) + a) & ~(a - 1)) - a) +#define BITS_PER_LONG (sizeof(uint64_t) * 8) #define HPAGE_SIZE (2 << 20) #endif /* _ACCFG_SIZE_H_ */