Igt-dev Archive on lore.kernel.org
 help / color / mirror / Atom feed
From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Daniele Ceraolo Spurio <daniele.ceraolospurio@intel.com>
Cc: igt-dev@lists.freedesktop.org
Subject: Re: [igt-dev] [PATCH i-g-t 1/2] lib/igt_kmod: Wait for a kmod to finish its probe before unloding it.
Date: Thu, 31 Mar 2022 19:03:11 -0700	[thread overview]
Message-ID: <87r16hh868.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <20220330183259.3003663-2-daniele.ceraolospurio@intel.com>

On Wed, 30 Mar 2022 11:32:58 -0700, Daniele Ceraolo Spurio wrote:
>
> diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> index cf7a3b22..d2ac8a56 100644
> --- a/lib/igt_kmod.c
> +++ b/lib/igt_kmod.c
> @@ -143,6 +143,12 @@ out:
>	return ret;
>  }
>
> +static bool
> +igt_kmod_is_loading(struct kmod_module *kmod)
> +{
> +	return kmod_module_get_initstate(kmod) == KMOD_MODULE_COMING;

One idea would be to check for KMOD_MODULE_LIVE here which will basically
invert the logic in the loop but will be a more exact check? But anyway
it's equivalent so no need to change I guess.

>  static int modprobe(struct kmod_module *kmod, const char *options)
>  {
>	unsigned int flags;
> @@ -289,6 +295,16 @@ igt_kmod_unload(const char *mod_name, unsigned int flags)
>		goto out;
>	}
>
> +	if (igt_kmod_is_loading(kmod)) {
> +		igt_debug("%s still initializing\n", mod_name);
> +		err = igt_wait(!igt_kmod_is_loading(kmod), 10000, 100);
> +		if (err < 0) {
> +			igt_debug("%s failed to complete init within the timeout\n",
> +				  mod_name);
> +			goto out;
> +		}
> +	}
> +
>	err = igt_kmod_unload_r(kmod, flags);

I think it's better to add this code to igt_kmod_unload_r() (instead of
igt_kmod_unload()) since that calls itself recursively to remove dependent
modules?

Also it seems strange that we should explicitly have to wait for module
state to become LIVE and kmod_module_remove_module() (which in turn calls
the delete_module syscall) doesn't handle this itself? But 'man
delete_module' specifically mentions this:

  ERRORS
       EBUSY  The module is not "live" (i.e., it is still being initialized or
              is already marked for removal) ...

So a patch like this seems to be needed somewhere (in IGT or in
libkmod). So adding it to IGT for now is fine.

  parent reply	other threads:[~2022-04-01  2:03 UTC|newest]

Thread overview: 15+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2022-03-30 18:32 [igt-dev] [PATCH i-g-t 0/2] Unload mei_gsc before i915 Daniele Ceraolo Spurio
2022-03-30 18:32 ` [igt-dev] [PATCH i-g-t 1/2] lib/igt_kmod: Wait for a kmod to finish its probe before unloding it Daniele Ceraolo Spurio
2022-03-31 22:52   ` Dixit, Ashutosh
2022-03-31 23:09     ` Ceraolo Spurio, Daniele
2022-04-01  1:18       ` Dixit, Ashutosh
2022-04-01  2:03   ` Dixit, Ashutosh [this message]
2022-04-01  2:11     ` Ceraolo Spurio, Daniele
2022-04-01  2:21       ` Dixit, Ashutosh
2022-03-30 18:32 ` [igt-dev] [PATCH i-g-t 2/2] lib/igt_kmod: Unload mei modules before unloading i915 Daniele Ceraolo Spurio
2022-03-31 21:54   ` Dixit, Ashutosh
2022-04-01  1:23     ` Dixit, Ashutosh
2022-04-01  2:04       ` Ceraolo Spurio, Daniele
2022-03-30 18:51 ` [igt-dev] ✗ GitLab.Pipeline: warning for Unload mei_gsc before i915 Patchwork
2022-03-30 19:25 ` [igt-dev] ✓ Fi.CI.BAT: success " Patchwork
2022-03-30 22:33 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=87r16hh868.wl-ashutosh.dixit@intel.com \
    --to=ashutosh.dixit@intel.com \
    --cc=daniele.ceraolospurio@intel.com \
    --cc=igt-dev@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox