[Accel-config] [PATCH 1/5] accel-config: Remove use of libkmod
Ramesh Thomas <ramesh.thomas at intel.com> Wed, 01 Dec 2021 18:59:05 -0500
| Newsgroups | dev.linux.lists.accel-config |
|---|---|
| Message-ID | <[email protected]> |
From: Ramesh Thomas <ramesh.thomas(a)linux.intel.com>
Systems running accel-config is expected to have idxd kernel module
already installed. Accel-config would fail if it is not loaded and would
not try to load it. This removes the dependency on installion of kmod
development package.
Signed-off-by: Ramesh Thomas <ramesh.thomas(a)linux.intel.com>
---
accfg/accel-config.c | 40 +++--------------------------
accfg/lib/private.h | 6 +----
test/core.c | 1 -
test/libaccfg.c | 61 +++++++-------------------------------------
4 files changed, 14 insertions(+), 94 deletions(-)
diff --git a/accfg/accel-config.c b/accfg/accel-config.c
index 0840e0b..225ce02 100644
--- a/accfg/accel-config.c
+++ b/accfg/accel-config.c
@@ -7,7 +7,6 @@
#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>
@@ -75,34 +74,9 @@ static struct cmd_struct commands[] = {
#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;
unsigned int last_error;
int rc;
@@ -122,18 +96,14 @@ int main(int argc, const char **argv)
return -EINVAL;
}
- rc = idxd_kmod_init(&kmod_ctx, &mod);
- if (rc < 0) {
- fprintf(stderr, "Failed initializing kernel module\n");
- goto error_exit;
+ if (access("/sys/module/idxd", F_OK)) {
+ fprintf(stderr, "idxd kernel module not loaded\n");
+ return EXIT_FAILURE;
}
rc = accfg_new(&ctx);
- if (rc) {
- kmod_module_unref(mod);
- kmod_unref(kmod_ctx);
+ if (rc)
goto error_exit;
- }
rc = main_handle_internal_command(argc, argv, ctx, commands,
ARRAY_SIZE(commands));
@@ -161,8 +131,6 @@ int main(int argc, const char **argv)
printf(": %s\n", accfg_ctx_get_last_error_str(ctx));
}
accfg_unref(ctx);
- kmod_module_unref(mod);
- kmod_unref(kmod_ctx);
if (!rc)
return EXIT_SUCCESS;
diff --git a/accfg/lib/private.h b/accfg/lib/private.h
index 57aa1ed..cc7bb7e 100644
--- a/accfg/lib/private.h
+++ b/accfg/lib/private.h
@@ -8,8 +8,8 @@
#include <stdbool.h>
#include <syslog.h>
#include <string.h>
+#include <inttypes.h>
#include <libudev.h>
-#include <libkmod.h>
#include <util/log.h>
#include <uuid/uuid.h>
#include <ccan/list/list.h>
@@ -165,8 +165,4 @@ static inline int check_udev(struct udev *udev)
return udev ? 0 : -ENXIO;
}
-static inline int check_kmod(struct kmod_ctx *kmod_ctx)
-{
- return kmod_ctx ? 0 : -ENXIO;
-}
#endif /* _LIBACCFG_PRIVATE_H_ */
diff --git a/test/core.c b/test/core.c
index 9346472..4fc99d9 100644
--- a/test/core.c
+++ b/test/core.c
@@ -3,7 +3,6 @@
#include <linux/version.h>
#include <sys/utsname.h>
-#include <libkmod.h>
#include <stdlib.h>
#include <errno.h>
#include <stdio.h>
diff --git a/test/libaccfg.c b/test/libaccfg.c
index 5a17650..9b65dc0 100644
--- a/test/libaccfg.c
+++ b/test/libaccfg.c
@@ -15,7 +15,6 @@
#include <util/json.h>
#include <util/filter.h>
#include <syslog.h>
-#include <libkmod.h>
#include <sys/wait.h>
#include <uuid/uuid.h>
#include <sys/types.h>
@@ -954,66 +953,30 @@ static struct _test_case test_cases[] = {
},
};
-static int idxd_kmod_init(struct kmod_ctx **ctx, struct kmod_module **mod,
- struct kmod_module **mdev_mod, int log_level)
-{
- struct log_ctx log_ctx;
- int rc;
-
- log_init(&log_ctx, "test/init", "LIB-ACCELCONFIG_TEST");
- log_ctx.log_priority = log_level;
-
- *ctx = kmod_new(NULL, NULL);
- if (!*ctx)
- return -ENXIO;
- kmod_set_log_priority(*ctx, log_level);
-
- rc = kmod_module_new_from_name(*ctx, "idxd", mod);
- if (rc < 0) {
- kmod_unref(*ctx);
- return rc;
- }
- rc = kmod_module_new_from_name(*ctx, "idxd_mdev", mdev_mod);
- if (rc < 0) {
- kmod_module_unref(*mod);
- kmod_unref(*ctx);
- return rc;
- }
- rc = kmod_module_get_initstate(*mdev_mod);
- if (rc < 0) {
- kmod_module_unref(*mdev_mod);
- *mdev_mod = NULL;
- mdev_disabled = true;
- }
- rc = kmod_module_get_initstate(*mod);
- if (rc < 0) {
- kmod_module_unref(*mod);
- kmod_unref(*ctx);
- }
-
- return rc;
-}
-
int test_libaccfg(int loglevel, struct accfg_test *test,
struct accfg_ctx *ctx)
{
unsigned int i;
int err, result = EXIT_FAILURE;
- struct kmod_ctx *kmod_ctx;
- struct kmod_module *mod, *mdev_mod;
struct accfg_device *device;
+ struct log_ctx log_ctx;
if (!accfg_test_attempt(test, KERNEL_VERSION(5, 6, 0)))
return EXIT_SKIP;
accfg_set_log_priority(ctx, loglevel);
- err = idxd_kmod_init(&kmod_ctx, &mod, &mdev_mod, loglevel);
- if (err < 0) {
+ log_init(&log_ctx, "test/init", "LIB-ACCELCONFIG_TEST");
+ log_ctx.log_priority = loglevel;
+
+ if (access("/sys/module/idxd", F_OK)) {
accfg_test_skip(test);
- fprintf(stderr, "idxd kmod unavailable skipping tests\n");
+ fprintf(stderr, "idxd kernel module not loaded\n");
return EXIT_SKIP;
}
+ if (access("/sys/module/idxd_mdev", F_OK))
+ mdev_disabled = true;
+
/*
* iterate to check the state of each device, skip entire test if any of
* them is active or not configurable
@@ -1074,12 +1037,6 @@ int test_libaccfg(int loglevel, struct accfg_test *test,
test_cleanup(ctx);
- if (mdev_mod)
- kmod_module_unref(mdev_mod);
-
- kmod_module_unref(mod);
- kmod_unref(kmod_ctx);
-
return result;
}
--
2.26.3