[igt-dev] [PATCH i-g-t] i915/perf: Make __perf_open() and friends public

Janusz Krzysztofik janusz.krzysztofik at linux.intel.com
Thu Feb 9 09:56:04 UTC 2023


On Wednesday, 8 February 2023 20:34:06 CET Umesh Nerlige Ramappa wrote:
> On Wed, Feb 08, 2023 at 11:09:23AM +0100, Janusz Krzysztofik wrote:
> >On Tuesday, 7 February 2023 21:15:26 CET Dixit, Ashutosh wrote:
> >> On Tue, 07 Feb 2023 12:04:17 -0800, Janusz Krzysztofik wrote:
> >> >
> >> > Hi Umesh,
> >> >
> >> > On Tuesday, 7 February 2023 20:33:50 CET Umesh Nerlige Ramappa wrote:
> >> > > On Tue, Feb 07, 2023 at 11:25:00AM -0800, Umesh Nerlige Ramappa 
wrote:
> >> > > >I wouldn't do this. Please keep the changes local to the specific 
test
> >> > > >that you implemented in your first rev. While it is a good idea to
> >> > > >have the some of the perf capabilities in the library, this is way 
too
> >> > > >much churn to implement a specific test for the original failure.
> >> > > >Unless multiple IGT subsytems area already dependent on perf APIs to
> >> > > >implement multiple tests, let's not do this.
> >> > > >
> >> > >
> >> > > Also note that the perf library implemented in IGT is not entirely 
used
> >> > > by IGT tests alone. The library is also linked to GPUvis software. 
Only
> >> > > a few pieces of reusable code in the perf library is used by IGT 
tests.
> >> >
> >> > Do you think that my changes will break other users?  How?
> >> >
> >> > Also, it looks like there are somehow conflicting expectations from 
different
> >> > reviewers.  Ashutosh wanted the new subtest to be implemented outside 
of i915/
> >> > perf test.  That's why I proposed to extend the library with open/close 
and
> >> > related helpers, just to avoid code duplication, and I'm about to 
resend it in
> >> > series with the new subtest implemented inside gem_ctx_exec.  Now, 
after I
> >> > submitted this patch for initial review, you say that a specific test 
is not
> >> > the way to go.  What are you afraid of?
> >> >
> >> > Whose expectations should I try to satisfy in order to have a subtest 
accepted
> >> > and merged?  Or should I just give up and duplicate the code from i915/
perf in
> >> > another test?  Or maybe you can have a look at the whole series before 
you
> >> > decide?
> >>
> >> Hi Janusz,
> >>
> >> I agree with Umesh. Given that here perf is just being used as a 'dummy
> >> workload' let's just duplicate the minimal code required for perf
> >> open/close wherever we are adding the new test. This will keep the real
> >> perf functionality undisturbed for reasons Umesh cited.
> >
> >TBH, I can't see any good justification among those reasons mentioned: "too
> >much churn", "unless ... already dependent", "not entirely used by IGT 
tests",
> >"linked to GPUvis software", "only a few pieces of reusable code ... used 
by
> >IGT" -- which of those justifies duplication of i915 perf code in IGT 
tests?
> 
> You yourself mentioned that this is not related to perf. It's just that 
> perf uses some code in i915 that does barrier related stuff which helps 
> you to reproduce the issue. Why can't that barrier-related-stuff be 
> implemented in IGT without the use of perf APIs?

Because inside the driver I found no ways to trigger the issue (within a time 
period reasonable from CI perspective) other than calling
intel_context_prepare_remote_request().  Only perf and gen8 sseu call that 
function.  Out of the two, perf was my choice because:
- perf matched the user scenario reported as the one that could trigger the 
  bug,
- we already had some work in progress subtest added to tests/i915/perf.c 
  still before my root cause analysis was completed.

> If that's a lot of 
> effort and it's quicker to reproduce this issue using perf APIs, then 
> that's fine with me, but keep it outside of perf library 

Why?
(assuming by "it" you mean some useful functions now in tests/i915/perf.c)

> and maybe add a 
> note saying that this test can be improved by figuring out how to do 
> barrier related execution in IGT in future. 

I don't understand what you mean by "in IGT" here.  Isn't lib/i915/perf.c "in 
IGT" (a part of IGT)?

> I don't see any 
> justification to modify perf library for an issue that's not even perf 
> related.

Not modify, only extend with a wrapper around DRM_IOCTL_I915_PERF_OPEN and 
helpers it depends on.

Justification why we need to call DRM_IOCTL_I915_PERF_OPEN from some new 
subtests: extend CI coverage over some rarely used processing paths.

Justification why add reusable code to a library: avoid code duplication.

Justification why add it to perf library: no doubt DRM_IOCTL_I915_PERF_OPEN is 
perf related, I believe.

> I believe you also mentioned somewhere that the issue was fixed by some 
> 'unknown' code changes to i915 and you are not able to reproduce
> it consistently with this test now.

No, I must have missed my point while clarifying things if that's how you've 
read them, sorry.  The issue is reproducible.  CI results from my trybot 
attempt clearly confirm that:
https://intel-gfx-ci.01.org/tree/drm-tip/TrybotIGT_699/bat-all.html?
testfilter=barrier-race

Results from preliminary fixes tested with the new IGT subtest on trybot:
https://intel-gfx-ci.01.org/tree/drm-tip/Trybot_113662v1/bat-all.html?
testfilter=barrier-race

> 
> I have considered the above factors to suggest that this should not 
> reside in perf library.
> 
> >Again, do you think that my changes can break other (non-IGT) users?  
> >How?
> 
> I didn't say that your changes break anything. I was stating that the 
> library code is shared across different tools.

But why do you think that an IGT library shared across different tools can't 
be extended with a few functions needed by IGT tests?

Thanks,
Janusz


> 
> Thanks,
> Umesh
> 
> >
> >Anyway, assuming you are the "owner" of lib/i915/perf.c, in order to 
satisfy
> >your (still not clear for me) requirements I'm already working on a new
> >version of my patch, with the i915 perf code duplicated as needed.
> >
> >Thanks,
> >Janusz
> >
> >>
> >> Thanks.
> >> --
> >> Ashutosh
> >>
> >
> >
> >
> >
> 






More information about the igt-dev mailing list