Quoting Imre Deak (2018-06-06 19:00:52) > On Wed, Jun 06, 2018 at 06:42:14PM +0100, Chris Wilson wrote: > > The current method of checking for a failed module load is flawed, as we > > only report the error on probing it is not being reported back by > > modprobe. So we have to dig inside the module_parameters while the > > module is still loaded to discover the error. > > > > v2: Expect i915.inject_load_failure to be zero on success > > > > Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> > > Cc: Michał Winiarski <michal.winiarski@xxxxxxxxx> > > Cc: Imre Deak <imre.deak@xxxxxxxxx> > > Reviewed-by: Michał Winiarski <michal.winiarski@xxxxxxxxx> > > --- > > tests/drv_module_reload.c | 45 ++++++++++++++++++++++++++++++++++----- > > 1 file changed, 40 insertions(+), 5 deletions(-) > > > > diff --git a/tests/drv_module_reload.c b/tests/drv_module_reload.c > > index 092982960..e18aaea5e 100644 > > --- a/tests/drv_module_reload.c > > +++ b/tests/drv_module_reload.c > > @@ -234,6 +234,38 @@ reload(const char *opts_i915) > > return err; > > } > > > > +static int open_parameters(const char *module_name) > > +{ > > + char path[256]; > > + > > + snprintf(path, sizeof(path), "/sys/module/%s/parameters", module_name); > > + return open(path, O_RDONLY); > > +} > > + > > +static int > > +inject_fault(const char *module_name, const char *opt, int fault) > > +{ > > + char buf[1024]; > > + int dir; > > + > > + igt_assert(fault > 0); > > + snprintf(buf, sizeof(buf), "%s=%d", opt, fault); > > + > > + if (igt_kmod_load(module_name, buf)) { > > + igt_warn("Failed to load module '%s' with options '%s'\n", > > + module_name, buf); > > + return 1; > > + } > > + > > + dir = open_parameters(module_name); > > + igt_sysfs_scanf(dir, opt, "%d", &fault); > > Just a note for later: in case we switch to async probing we'll have to > wait somehow until the probe completed. One way would be to disable > async probing for this test, not sure if that could hide some problem > though. modprobe already waits for async probes (via async_synchronize_full() before it returns to userspace). Afaict, that async flag only has any relevance for builtins. If you want to parallel module loading, you need to fork. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx