From: Mauro Carvalho Chehab <mauro.chehab@linux.intel.com>
To: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
Cc: igt-dev@lists.freedesktop.org, intel-gfx@lists.freedesktop.org,
Isabella Basso <isabbasso@riseup.net>
Subject: Re: [igt-dev] [Intel-gfx] [PATCH i-g-t v2 05/17] lib/kunit: Fix illegal igt_fail() calls inside subtest body
Date: Mon, 11 Sep 2023 13:57:29 +0200 [thread overview]
Message-ID: <20230911135729.24056014@maurocar-mobl2> (raw)
In-Reply-To: <2157156.irdbgypaU6@jkrzyszt-mobl2.ger.corp.intel.com>
On Mon, 11 Sep 2023 11:28:32 +0200
Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> wrote:
> Hi Mauro,
>
> Thanks for review.
>
> On Monday, 11 September 2023 10:52:51 CEST Mauro Carvalho Chehab wrote:
> > On Fri, 8 Sep 2023 14:32:39 +0200
> > Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com> wrote:
> >
> > > In a body of a subtest with dynamic sub-subtests, it is illegal to call
> > > igt_fail() and its variants from outside of a dynamic sub-subtest body.
> > > On the other hand, it is perfectly legal to call either igt_skip() and
> > > friends or __igt_abort() or its variant from there.
> > >
> > > In the current implementation of igt_kunit(), there are several places
> > > where igt_fail() is called despite being illegal. Moreover, it is called
> > > with IGT_EXIT_ABORT as an argument with no good reason for using such
> > > aggressive method that forces CI to trigger system reboot (in most cases
> > > igt_runner can decide if abort is required).
> > >
> > > Follow igt_kselftests() pattern more closely, where similar setup and
> > > cleanup operations are performed but their potential errors are processed
> > > in a more friendly way. Move common cleanup and their corresponding setup
> > > steps out of the subtest body. Place the latter as requirements in a
> > > preceding igt_fixture section. Replace remaining illegal igt_fail() calls
> > > with more friendly skips. Let igt_runner decide if abort is needed.
> > >
> > > Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik@linux.intel.com>
> > > ---
> > > lib/igt_kmod.c | 75 +++++++++++++++-----------------------------------
> > > 1 file changed, 22 insertions(+), 53 deletions(-)
> > >
> > > diff --git a/lib/igt_kmod.c b/lib/igt_kmod.c
> > > index 1d1cd51170..78b8eb8f53 100644
> > > --- a/lib/igt_kmod.c
> > > +++ b/lib/igt_kmod.c
> ...
> > > @@ -825,24 +793,21 @@ static void __igt_kunit(const char *module_name, const char *opts)
> > > }
> > > }
> > >
> > > -unload:
> > > - igt_ktest_end(&tst);
> > > -
> > > - igt_ktest_fini(&tst);
> > > -
> > > - igt_skip_on_f(skip, "Skipping test, as probing KUnit module failed\n");
> > > -
> > > - if (fail)
> > > - igt_fail(IGT_EXIT_ABORT);
> > > -
> > > ret = ktap_parser_stop();
> > >
> > > - if (ret != 0)
> > > - igt_fail(IGT_EXIT_ABORT);
> > > + igt_skip_on_f(ret, "KTAP parser failed\n");
> > > }
> > >
> > > void igt_kunit(const char *module_name, const char *name, const char *opts)
> > > {
> > > + struct igt_ktest tst;
> > > +
> > > + if (igt_ktest_init(&tst, module_name) != 0)
> > > + return;
> >
> > Shouldn't it be calling igt_skip() here too?
>
> Maybe yes. I've chosen to follow the algorithm used in igt_kselftest. There
> was an igt_skip() variant there initially but in 2017 that was converted to
> the current return only by Peter with IGT commit 9f92893b11e8 ("lib/igt_kmod:
> Don't call igt_assert or igt_require without a fixture"). However,
> justification for dropping igt_require() instead of calling it from an
> igt_fixture section may not apply to kunit modules:
>
> "If kmod_module_new_from_name fails, ... return normally from igt_kselftest,
> matching behaviour when the module loading is successful but it doesn't
> contain selftests."
>
> While i915 could be built with no selftests included, a kunit module without
> any tests doesn't make sense, then silent return may be not what we need.
Yeah, selftests are handled on a different way with regards to module
probe, so I guess we need the igt_skip there if modprobe fails.
Well, you can probably simulate it by renaming a Kunit module
and see how IGT will handle that with the current code and with
igt_skip().
(Btw, I intend to review the other patches on this series, but need
some time to do tests, as some changes here are not trivial)
Regards,
Mauro
next prev parent reply other threads:[~2023-09-11 11:57 UTC|newest]
Thread overview: 49+ messages / expand[flat|nested] mbox.gz Atom feed top
2023-09-08 12:32 [igt-dev] [PATCH i-g-t v2 00/17] Fix IGT Kunit implementation issues Janusz Krzysztofik
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 01/17] lib/kunit: Drop unused file stream Janusz Krzysztofik
2023-09-15 10:36 ` Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 02/17] lib/kunit: Stop loading kunit module explicitly Janusz Krzysztofik
2023-09-15 10:36 ` Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 03/17] lib/kunit: Fix struct kmod_module kunit_kmod not freed Janusz Krzysztofik
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 04/17] lib/kunit: Optimize calls to igt_success/skip/fail() Janusz Krzysztofik
2023-09-11 8:49 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 05/17] lib/kunit: Fix illegal igt_fail() calls inside subtest body Janusz Krzysztofik
2023-09-11 8:52 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-11 9:28 ` Janusz Krzysztofik
2023-09-11 11:57 ` Mauro Carvalho Chehab [this message]
2023-09-13 13:03 ` Janusz Krzysztofik
2023-09-15 9:58 ` Mauro Carvalho Chehab
2023-09-15 10:08 ` Janusz Krzysztofik
2023-09-15 12:13 ` Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 06/17] lib/ktap: Make sure we fail on premature cancel Janusz Krzysztofik
2023-09-11 8:55 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 07/17] lib/ktap: Don't ignore interrupt signals Janusz Krzysztofik
2023-09-11 9:01 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-13 14:04 ` Janusz Krzysztofik
2023-09-15 12:25 ` Mauro Carvalho Chehab
2023-09-15 13:06 ` Janusz Krzysztofik
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 08/17] lib/kunit: Cancel KTP parser on module load failure Janusz Krzysztofik
2023-09-11 9:02 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 09/17] lib/ktap: Drop is_running flag Janusz Krzysztofik
2023-09-11 9:03 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 10/17] lib/ktap: Read /dev/kmsg in blocking mode Janusz Krzysztofik
2023-09-15 10:42 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 11/17] lib/kunit: Fail / skip on kernel taint Janusz Krzysztofik
2023-09-15 10:43 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 12/17] lib/ktap: Use IGT linked lists for storing KTAP results Janusz Krzysztofik
2023-09-15 10:44 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 13/17] lib/ktap: Reimplement KTAP parser Janusz Krzysztofik
2023-09-15 11:45 ` Mauro Carvalho Chehab
2023-09-15 12:28 ` [igt-dev] [Intel-gfx] " Mauro Carvalho Chehab
2023-09-15 13:09 ` Janusz Krzysztofik
2023-09-15 13:35 ` [Intel-xe] " Janusz Krzysztofik
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 14/17] lib/kunit: Load test modules in background Janusz Krzysztofik
2023-09-15 12:11 ` Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 15/17] lib/kunit: Parse KTAP report from the main process thread Janusz Krzysztofik
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 16/17] lib/kunit: Strip "_test" or "_kunit" suffix from subtest names Janusz Krzysztofik
2023-09-15 11:42 ` Mauro Carvalho Chehab
2023-09-08 12:32 ` [igt-dev] [PATCH i-g-t v2 17/17] lib/kunit: Omit suite name prefix if the same as subtest name Janusz Krzysztofik
2023-09-08 14:08 ` [igt-dev] ✗ GitLab.Pipeline: warning for Fix IGT Kunit implementation issues (rev2) Patchwork
2023-09-08 14:46 ` [igt-dev] ✗ Fi.CI.BAT: failure " Patchwork
2023-09-08 15:51 ` [igt-dev] ✓ CI.xeBAT: success " Patchwork
2023-09-11 12:26 ` [igt-dev] ✓ Fi.CI.BAT: " Patchwork
2023-09-11 14:57 ` [igt-dev] ✗ Fi.CI.IGT: failure " 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=20230911135729.24056014@maurocar-mobl2 \
--to=mauro.chehab@linux.intel.com \
--cc=igt-dev@lists.freedesktop.org \
--cc=intel-gfx@lists.freedesktop.org \
--cc=isabbasso@riseup.net \
--cc=janusz.krzysztofik@linux.intel.com \
/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