From: "Dixit, Ashutosh" <ashutosh.dixit@intel.com>
To: Harish Chegondi <harish.chegondi@intel.com>
Cc: <igt-dev@lists.freedesktop.org>
Subject: Re: [PATCH i-g-t 1/1] tests/intel/xe_eu_stall: Do not check for presence of data on simulation
Date: Wed, 21 May 2025 14:30:13 -0700 [thread overview]
Message-ID: <87msb54pp6.wl-ashutosh.dixit@intel.com> (raw)
In-Reply-To: <aCwAYhr9WPaUqY9I@intel.com>
On Mon, 19 May 2025 21:09:06 -0700, Harish Chegondi wrote:
>
Hi Harish,
> On Tue, May 13, 2025 at 11:03:53PM -0700, Dixit, Ashutosh wrote:
> > On Tue, 13 May 2025 15:16:14 -0700, Dixit, Ashutosh wrote:
> > >
> > > On Tue, 13 May 2025 13:57:41 -0700, Harish Chegondi wrote:
> > > >
> > > > On Tue, May 13, 2025 at 09:43:32AM -0700, Dixit, Ashutosh wrote:
> > > > > On Mon, 12 May 2025 20:07:38 -0700, Harish Chegondi wrote:
> > > > > >
> > > > > > Some simulation models may not have full EU stall sampling support.
> > > > > >
> > > > > > Signed-off-by: Harish Chegondi <harish.chegondi@intel.com>
> > > > > > ---
> > > > > > tests/intel/xe_eu_stall.c | 4 +++-
> > > > > > 1 file changed, 3 insertions(+), 1 deletion(-)
> > > > > >
> > > > > > diff --git a/tests/intel/xe_eu_stall.c b/tests/intel/xe_eu_stall.c
> > > > > > index 411c30871..bdfa0fc4b 100644
> > > > > > --- a/tests/intel/xe_eu_stall.c
> > > > > > +++ b/tests/intel/xe_eu_stall.c
> > > > > > @@ -586,7 +586,6 @@ enable:
> > > > > >
> > > > > > ret = wait_child(&work_load);
> > > > > > igt_assert_f(ret == 0, "waitpid() - ret: %d, errno: %d\n", ret, errno);
> > > > > > - igt_assert_f(num_samples, "No EU stalls detected during the workload\n");
> > > > > >
> > > > > > do_ioctl(stream_fd, DRM_XE_OBSERVATION_IOCTL_DISABLE, 0);
> > > > > > if (--iter)
> > > > > > @@ -594,6 +593,9 @@ enable:
> > > > > >
> > > > > > close(stream_fd);
> > > > > > free(buf);
> > > > > > +
> > > > > > + if (!igt_run_in_simulation())
> > > > > > + igt_assert_f(num_samples, "No EU stalls detected during the workload\n");
> > > > >
> > > > > Do we really want to move this here? Wasn't the earlier location better
> > > > > since it checked num_samples for every iteration, whereas now we'd check it
> > > > > only for the last iteration?
> > > > Hi Ashutosh,
> > > >
> > > > Initially I didn't move. When testing I noticed that if there is no
> > > > data, the assert triggers and the following close() and free() are not
> > > > called. When the next sub-test gets executed, it returns EBUSY as the
> > > > stream is not closed in the previous test. So, I moved this check here.
> > > > Anyhow the data from the first iteration is checked in the blocking-read
> > > > and non-blocking-read subtests where there is only one iteration.
> > >
> > > Hmm, the problem is, it's making the code look weird now. Also, if the
> > > process dies in an assert, the fd should get closed when the process
> > > died.
> >
> > Actually, not sure about this, because it is not a fd created by the
> > process but an anon fd returned by the open ioctl, so not sure if it gets
> > closed. I have seen similar EBUSY's happening in OA tests too when things
> > fail. Anyway, take a quick look and see what's happening, if release() is
> > getting called or not.
> >
> > If EBUSY's are ok, we can add the sim check in the previous place.
> Hi Ashutosh,
>
> I have put prints in the driver release() function and ran several
> tests. I see that if the test doesn't explicitly close the fd, the fd
> gets closed at the end of the test. If no subtest is specified to run,
> all sub-tests are run one after another. If one subtest opens an fd but
> doesn't close it (due to an assert before close()), it will be closed
> only after all subtests have run. Buf if only one subtest is run and the
> fd isn't closed in the test due to an assert, the fd gets closed and
> release() called at the end of the subtest.
>
> Since I moved the assert() after close(), if the assert gets triggered,
> it doesn't affect the next subtest as the close() was called. If I don't
> move the assert() after close(), an assert will not close fd and the
> next subtest, if it calls open to get another fd, the driver returns
> -EBUSY as an earlier session was not closed.
> >
> > >
> > > Or is there a delay between the process dying and fd getting closed? And
> > > the next process is trying to open the fd before the previous process
> > > closed the fd? Where did you see the EBUSY issue, is it happening in CI? Or
> > > what are you executing to reproduce the EBUSY issue?
> If a subtest doesn't call close() due to an assert() and the next
> subtest calls open(), the driver while initializing notices that there
> is an open session and returns -EBUSY.
> > >
> > > Can you please add a print in the eu stall release fops and see if
> > > release() is not getting called when the process dies (put an artificial
> > > assert in igt if needed).
> Please see above. I can confirm that if the test doesn't close the fd,
> the fd is getting closed at the end of the test.
> > >
> > > Better to investigate this a little bit more I think.
Thanks for the experiments. At this time our suggestion is to use a global
stream_fd and unconditionally close it before opening it in the next
subtest, see __perf_open() in xe_oa.c. And let's see if it resolves this
issue.
Thanks.
--
Ashutosh
prev parent reply other threads:[~2025-05-21 21:30 UTC|newest]
Thread overview: 11+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-05-13 3:07 [PATCH i-g-t 1/1] tests/intel/xe_eu_stall: Do not check for presence of data on simulation Harish Chegondi
2025-05-13 4:02 ` ✓ Xe.CI.BAT: success for series starting with [i-g-t,1/1] " Patchwork
2025-05-13 4:17 ` ✓ i915.CI.BAT: " Patchwork
2025-05-13 5:01 ` ✗ Xe.CI.Full: failure " Patchwork
2025-05-13 7:04 ` ✗ i915.CI.Full: " Patchwork
2025-05-13 16:43 ` [PATCH i-g-t 1/1] " Dixit, Ashutosh
2025-05-13 20:57 ` Harish Chegondi
2025-05-13 22:16 ` Dixit, Ashutosh
2025-05-14 6:03 ` Dixit, Ashutosh
2025-05-20 4:09 ` Harish Chegondi
2025-05-21 21:30 ` Dixit, Ashutosh [this message]
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=87msb54pp6.wl-ashutosh.dixit@intel.com \
--to=ashutosh.dixit@intel.com \
--cc=harish.chegondi@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 an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.