[igt-dev] [PATCH i-g-t] lib: Update selftests to use dynamic subtests
Sarvela, Tomi P
tomi.p.sarvela at intel.com
Mon Feb 17 11:36:10 UTC 2020
> From: Latvala, Petri <petri.latvala at intel.com>
>
> On Fri, Feb 14, 2020 at 09:48:29PM +0000, Chris Wilson wrote:
> > Use the new igt_subtest_with_dynamic to nicely group the dynamic
> > subtests together.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > Cc: Petri Latvala <petri.latvala at intel.com>
> > Cc: Tomi Sarvela <tomi.p.sarvela at intel.com>
> > ---
> > lib/igt_kmod.c | 23 +++++++++++++++++++----
> > 1 file changed, 19 insertions(+), 4 deletions(-)
> >
> > diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> > index 05019c24c..e701545d3 100644
> > --- a/lib/igt_kmod.c
> > +++ b/lib/igt_kmod.c
> > @@ -21,6 +21,7 @@
> > * IN THE SOFTWARE.
> > */
> >
> > +#include <ctype.h>
> > #include <signal.h>
> > #include <errno.h>
> >
> > @@ -602,6 +603,18 @@ void igt_kselftest_fini(struct igt_kselftest *tst)
> > kmod_module_unref(tst->kmod);
> > }
> >
> > +static const char *unfilter(const char *filter, const char *name)
> > +{
> > + if (!filter)
> > + return name;
> > +
> > + name += strlen(filter);
> > + if (!isalpha(*name))
> > + name++;
> > +
> > + return name;
> > +}
> > +
> > void igt_kselftests(const char *module_name,
> > const char *options,
> > const char *result,
> > @@ -618,10 +631,12 @@ void igt_kselftests(const char *module_name,
> > igt_require(igt_kselftest_begin(&tst) == 0);
> >
> > igt_kselftest_get_tests(tst.kmod, filter, &tests);
> > - igt_list_for_each_entry_safe(tl, tn, &tests, link) {
> > - igt_subtest_f("%s", tl->name)
> > - igt_kselftest_execute(&tst, tl,
> options, result);
> > - free(tl);
> > + igt_subtest_with_dynamic(filter ?: "all") {
> > + igt_list_for_each_entry_safe(tl, tn, &tests, link)
> {
> > + igt_dynamic_f("%s",
> unfilter(filter, tl->name))
> > +
> igt_kselftest_execute(&tst, tl, options, result);
> > + free(tl);
> > + }
> > }
>
>
> Thanks for starting this, exactly what dynamic subtests are for.
>
> Pre-acked-by: Petri Latvala <petri.latvala at intel.com>
>
> CI side should be made ready before landing this. With kernel
> selftests being now launched from statically enumerable subtests,
> selftests can be added to fast-feedback.testlist and un-blacklisted
> from shards where applicable.
Acked-by: Tomi Sarvela <tomi.p.sarvela at intel.com>
This is good: the discovery of sub-selftests will be done by the tests, so
we can drop the selftest.testlist and use common blacklist where applicable.
> Tomi, what do we run (and what do we want to) in BAT now? Objections
> to running selftests in shards mixed in with other tests?
BAT is running fast-feedback.testlist and after that from selftests:
igt at i915_selftest@live_*
igt at dmabuf@*
In other words, currently blacklisted selftests in BAT are:
igt at i915_selftest@{mock,perf}_*
igt at drm_mm@*
igt at kms_selftest@*
I don't mind selftests being shuffled through all the other tests, we have
the checks in place for taint/lockdep to recognize hopeless driver states
to force reboot.
> Runtime is a concern if all (FSVO all) selftests are launched with one
> entry in a testlist. What is the total runtime on a random platform
> for, say, i915_selftest subtests (post patch)? We might need to split
> more than just live/mock.
Runtimes for last functional selftest shard are from CI_DRM_7925:
tgl 186s
hsw 762s
glk 223s
icl 177s
kbl 199s
apl 284s
snb 112s
skl 763s
The obvious outliers are SKL and HSW:
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7925/shard-skl10/igt_runner35.txt
https://intel-gfx-ci.01.org/tree/drm-tip/CI_DRM_7925/shard-hsw5/igt_runner35.txt
HSW due to timeout in live_gtt which wasted 10 minutes, SKL due to generic slowness
and in addition couple of drm_mm tests taking > 100s per subtest.
Tomi
More information about the igt-dev
mailing list