[PATCH i-g-t 2/2] lib/igt_kmod: Do not explicitly unload intel mei driver
Daniele Ceraolo Spurio
daniele.ceraolospurio at intel.com
Fri Dec 20 19:09:39 UTC 2024
On 12/20/2024 10:10 AM, Kamil Konieczny wrote:
> Hi Daniele,
> On 2024-12-18 at 15:38:30 -0800, Daniele Ceraolo Spurio wrote:
>> The mei driver is a child of i915 on discrete, but not on integrated.
>> This means we want to unplug it before removing i915 in the former case
>> but not in the latter. Therefore, instead of manually unloading the mei
>> driver, we can unbind i915 and leave it to the kernel to unplug all the
>> dependencies. This also means that we don't need to explicitly disable
>> the vtcon anymore.
> Will it work also in case of both iGPU + dGPU present?
It should work, yes. The i915/xe unbind will not unload the mei drivers,
it will just unbind them if they're bound to a gfx child device. So in
the case of having both igpu and dgpu the mei driver will keep being
bound to the CPU mei device, which is what we want.
> Should we provide a tool to unload an i915 driver?
A subtest of i915_module_load that just unloads could be useful. We have
that for Xe.
Daniele
>
> Regards,
> Kamil
>
>> The other 2 dependencies are left untouched:
>> - intel_ips uses symbol_get, so the automatic dependency detection won't
>> unload it.
>> - the hotunplug test mentions that the sound driver can throw errors on
>> i915 unbind, so we need to keep the explicit unload.
>>
>> Signed-off-by: Daniele Ceraolo Spurio <daniele.ceraolospurio at intel.com>
>> Cc: Lucas De Marchi <lucas.demarchi at intel.com>
>> ---
>> lib/igt_kmod.c | 9 ++-------
>> 1 file changed, 2 insertions(+), 7 deletions(-)
>>
>> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
>> index a8b0339b9..fa9541d72 100644
>> --- a/lib/igt_kmod.c
>> +++ b/lib/igt_kmod.c
>> @@ -620,16 +620,9 @@ int __igt_intel_driver_unload(char **who, const char *driver)
>> const char *aux[] = {
>> /* gen5: ips uses symbol_get() so only a soft module dependency */
>> "intel_ips",
>> - /* mei_gsc uses an i915 aux dev and the other mei mods depend on it */
>> - "mei_pxp",
>> - "mei_hdcp",
>> - "mei_gsc",
>> NULL,
>> };
>>
>> - /* unbind vt */
>> - bind_fbcon(false);
>> -
>> ret = igt_audio_driver_unload(who);
>> if (ret)
>> return ret;
>> @@ -648,6 +641,8 @@ int __igt_intel_driver_unload(char **who, const char *driver)
>> }
>>
>> if (igt_kmod_is_loaded(driver)) {
>> + igt_kmod_unbind(driver);
>> +
>> ret = igt_kmod_unload(driver);
>> if (ret) {
>> if (who)
>> --
>> 2.43.0
>>
More information about the igt-dev
mailing list