[PATCH i-g-t 2/2] lib/igt_kmod: Add IGT_HOOK_POST_GPUKMOD_UNBIND
Peter Senna Tschudin
peter.senna at linux.intel.com
Thu Jul 3 15:03:04 UTC 2025
Adds an igt_hook after the unbind operation of the GPU kmod intended as
a strategice entry point for kmemleak scans.
Can be used with --hook 'post-gpukmod-unbind:...'
Cc: Gustavo Souza <gustavo.souza at linux.intel.com>
Signed-off-by: Peter Senna Tschudin <peter.senna at linux.intel.com>
---
lib/igt_hook.c | 5 +++++
lib/igt_hook.h | 1 +
lib/igt_kmod.c | 7 +++++++
3 files changed, 13 insertions(+)
diff --git a/lib/igt_hook.c b/lib/igt_hook.c
index 8932d118d..a3f92acd4 100644
--- a/lib/igt_hook.c
+++ b/lib/igt_hook.c
@@ -74,6 +74,8 @@ static const char *igt_hook_evt_type_to_name(enum igt_hook_evt_type evt_type)
return "post-subtest";
case IGT_HOOK_POST_TEST:
return "post-test";
+ case IGT_HOOK_POST_GPUKMOD_UNBIND:
+ return "post-gpukmod-unbind";
case IGT_HOOK_NUM_EVENTS:
break;
/* No "default:" case, to force a warning from -Wswitch in case we miss
@@ -470,6 +472,9 @@ below:\n\
case IGT_HOOK_POST_TEST:
desc = "Occurs after a test case has finished.";
break;
+ case IGT_HOOK_POST_GPUKMOD_UNBIND:
+ desc = "Occurs after the GPU kernel module is unbound from the device.";
+ break;
default:
desc = "MISSING DESCRIPTION";
}
diff --git a/lib/igt_hook.h b/lib/igt_hook.h
index e9f97b79b..92d3986e8 100644
--- a/lib/igt_hook.h
+++ b/lib/igt_hook.h
@@ -39,6 +39,7 @@ enum igt_hook_evt_type {
IGT_HOOK_POST_DYN_SUBTEST,
IGT_HOOK_POST_SUBTEST,
IGT_HOOK_POST_TEST,
+ IGT_HOOK_POST_GPUKMOD_UNBIND,
IGT_HOOK_NUM_EVENTS /* This must always be the last one. */
};
diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
index 6d7f5705c..e300b743a 100644
--- a/lib/igt_kmod.c
+++ b/lib/igt_kmod.c
@@ -41,6 +41,7 @@
#include "igt_aux.h"
#include "igt_core.h"
#include "igt_debugfs.h"
+#include "igt_hook.h"
#include "igt_kmod.h"
#include "igt_ktap.h"
#include "igt_sysfs.h"
@@ -604,6 +605,7 @@ int __igt_intel_driver_unload(char **who, const char *driver)
*/
int igt_kmod_unbind(const char *mod_name, const char *pci_device)
{
+ struct igt_hook *igt_hook = NULL;
char path[PATH_MAX];
struct dirent *de;
int dirlen;
@@ -633,6 +635,11 @@ int igt_kmod_unbind(const char *mod_name, const char *pci_device)
}
closedir(dir);
+ igt_hook = igt_hook_get_pointer();
+ igt_hook_event_notify(igt_hook, &(struct igt_hook_evt){
+ .evt_type = IGT_HOOK_POST_GPUKMOD_UNBIND,
+ .target_name = mod_name,
+ });
return 0;
}
--
2.43.0
More information about the igt-dev
mailing list