[PATCH i-g-t 2/2] lib/igt_kmod: Add IGT_HOOK_POST_GPUKMOD_UNBIND

Gustavo Sousa gustavo.sousa at intel.com
Fri Jul 11 13:20:23 UTC 2025


Quoting Peter Senna Tschudin (2025-07-03 12:03:04-03:00)
>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,

We are missing a documentation line for this new member.

>         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,

The member .target_name is not being used for
IGT_HOOK_POST_GPUKMOD_UNBIND. Did you mean to use it to update an
environment variable (e.g. IGT_HOOK_KMOD_UNBIND_MODULE_NAME)?

--
Gustavo Sousa

>+        });
> 
>         return 0;
> }
>-- 
>2.43.0
>


More information about the igt-dev mailing list