[PATCH i-g-t 07/10] lib/igt_kmod: Add rebind abstraction

Lucas De Marchi lucas.demarchi at intel.com
Mon Apr 14 21:36:02 UTC 2025


On Mon, Apr 14, 2025 at 08:07:22PM +0200, Kamil Konieczny wrote:
>Hi Lucas,
>On 2025-04-10 at 15:48:36 -0700, Lucas De Marchi wrote:
>> Abstract the "set one file in the drivers dir" and share the
>> implementation with unbind/rebind.
>>
>> Signed-off-by: Lucas De Marchi <lucas.demarchi at intel.com>
>> ---
>>  lib/igt_kmod.c | 11 +++++++++++
>>  lib/igt_kmod.h |  2 ++
>>  2 files changed, 13 insertions(+)
>>
>> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
>> index 14b6b957a..6d7f5705c 100644
>> --- a/lib/igt_kmod.c
>> +++ b/lib/igt_kmod.c
>> @@ -665,6 +665,17 @@ int igt_kmod_bind(const char *mod_name, const char *pci_device)
>>  	return ret;
>>  }
>>
>> +/**
>> + * igt_kmod_rebind: Unbind driver from devices and bind it again
>> + * @mod_name: name of the module to rebind
>> + * @pci_device: device to rebind to
>> + */
>> +int igt_kmod_rebind(const char *mod_name, const char *pci_device)
>> +{
>> +	return igt_kmod_unbind(mod_name, pci_device) ||
>> +		igt_kmod_bind(mod_name, pci_device);
>
>What if after unbind the bind is still there?

I'm not sure I follow what you mean here, but: if igt_kmod_unbind()
fails, it simply returns that and don't executed the second function.
Was this the question?

Lucas De Marchi

>
>Regards,
>Kamil
>
>> +}
>> +
>>  /**
>>   * igt_intel_driver_unload:
>>   *
>> diff --git a/lib/igt_kmod.h b/lib/igt_kmod.h
>> index e3a4ce671..905070897 100644
>> --- a/lib/igt_kmod.h
>> +++ b/lib/igt_kmod.h
>> @@ -39,6 +39,8 @@ int igt_kmod_unload(const char *mod_name);
>>  int igt_kmod_unbind(const char *mod_name, const char *pci_device);
>>  __attribute__((nonnull)) int igt_kmod_bind(const char *mod_name,
>>  					   const char *pci_device);
>> +__attribute__((nonnull)) int igt_kmod_rebind(const char *mod_name,
>> +					     const char *pci_device);
>>
>>  int igt_audio_driver_unload(char **whom);
>>
>>
>> --
>> 2.49.0
>>


More information about the igt-dev mailing list