[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 19:26:49 UTC 2025


Sorry Lucas and Gustavo for the typo in your email address...

On 7/3/2025 5:03 PM, Peter Senna Tschudin wrote:
> 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: Lucas de Marchi <lucas.demarchi at intel.com>> 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;
>  }



More information about the igt-dev mailing list