Message ID | 20180903130200.30736-1-chris@chris-wilson.co.uk (mailing list archive) |
---|---|
State | New, archived |
Headers | show |
Series | [i-g-t,v2] lib/pm: Wait a little for sound module load to complete | expand |
On Mon, Sep 03, 2018 at 02:02:00PM +0100, Chris Wilson wrote: > Sometimes we may probe the sound module as it is still being registered > and its debugfs not yet fully populated. If we do not find a file we > expect to exist, sleep a little and check again. > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107801 > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > Cc: Imre Deak <imre.deak@linux.com> Reviewed-by: Imre Deak <imre.deak@intel.com> A different delay is when the snd_hda_intel's probing takes more than 5 sec (as you noticed in [1]), should we increase the timeout in igt_pm_enable_audio_runtime_pm() for that as well? [1] https://intel-gfx-ci.01.org/tree/drm-tip/IGT_4618/fi-cnl-psr/igt@pm_rpm@module-reload.html > --- > lib/igt_pm.c | 22 +++++++++++++++------- > 1 file changed, 15 insertions(+), 7 deletions(-) > > diff --git a/lib/igt_pm.c b/lib/igt_pm.c > index 339a51e6f..c18bb87c6 100644 > --- a/lib/igt_pm.c > +++ b/lib/igt_pm.c > @@ -154,20 +154,28 @@ static int __igt_pm_enable_audio_runtime_pm(void) > while ((de = readdir(dir))) { > const char *match = "hwC"; > char buf[32] = { }; /* for Valgrind */ > - char *tmp; > + int loops = 500; > + int base; > int ret; > > if (de->d_type != DT_LNK || > strncmp(de->d_name, match, strlen(match))) > continue; > > - igt_assert(asprintf(&tmp, > - "/sys/class/sound/%s/vendor_name", > - de->d_name)); > + base = openat(dirfd(dir), de->d_name, O_RDONLY); > + igt_assert_fd(base); > + > + do { > + fd = open(base, "vendor_name", O_RDONLY); > + if (fd < 0) /* module is still loading? */ > + usleep(1000); > + else > + break; > + } while (--loops); > + close(base); > + if (fd < 0) > + continue; > > - fd = open(tmp, O_RDONLY); > - free(tmp); > - igt_assert_fd(fd); > ret = read(fd, buf, sizeof(buf)); > close(fd); > igt_assert(ret > 0); > -- > 2.19.0.rc1 > > _______________________________________________ > igt-dev mailing list > igt-dev@lists.freedesktop.org > https://lists.freedesktop.org/mailman/listinfo/igt-dev
Quoting Imre Deak (2018-09-04 11:00:26) > On Mon, Sep 03, 2018 at 02:02:00PM +0100, Chris Wilson wrote: > > Sometimes we may probe the sound module as it is still being registered > > and its debugfs not yet fully populated. If we do not find a file we > > expect to exist, sleep a little and check again. > > > > Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107801 > > Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> > > Cc: Imre Deak <imre.deak@linux.com> > > Reviewed-by: Imre Deak <imre.deak@intel.com> > > A different delay is when the snd_hda_intel's probing takes more than 5 > sec (as you noticed in [1]), should we increase the timeout in > igt_pm_enable_audio_runtime_pm() for that as well? Just bump it to 10s and only worry if we see a test failure later? -Chris
diff --git a/lib/igt_pm.c b/lib/igt_pm.c index 339a51e6f..c18bb87c6 100644 --- a/lib/igt_pm.c +++ b/lib/igt_pm.c @@ -154,20 +154,28 @@ static int __igt_pm_enable_audio_runtime_pm(void) while ((de = readdir(dir))) { const char *match = "hwC"; char buf[32] = { }; /* for Valgrind */ - char *tmp; + int loops = 500; + int base; int ret; if (de->d_type != DT_LNK || strncmp(de->d_name, match, strlen(match))) continue; - igt_assert(asprintf(&tmp, - "/sys/class/sound/%s/vendor_name", - de->d_name)); + base = openat(dirfd(dir), de->d_name, O_RDONLY); + igt_assert_fd(base); + + do { + fd = open(base, "vendor_name", O_RDONLY); + if (fd < 0) /* module is still loading? */ + usleep(1000); + else + break; + } while (--loops); + close(base); + if (fd < 0) + continue; - fd = open(tmp, O_RDONLY); - free(tmp); - igt_assert_fd(fd); ret = read(fd, buf, sizeof(buf)); close(fd); igt_assert(ret > 0);
Sometimes we may probe the sound module as it is still being registered and its debugfs not yet fully populated. If we do not find a file we expect to exist, sleep a little and check again. Bugzilla: https://bugs.freedesktop.org/show_bug.cgi?id=107801 Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk> Cc: Imre Deak <imre.deak@linux.com> --- lib/igt_pm.c | 22 +++++++++++++++------- 1 file changed, 15 insertions(+), 7 deletions(-)