[igt-dev] [RFT v4 4/6] igt/i915: Require GTT mapping to be available when needed.

Chris Wilson chris at chris-wilson.co.uk
Thu Apr 11 20:07:21 UTC 2019


Quoting Antonio Argenziano (2019-04-11 19:13:13)
> 
> 
> On 27/03/19 14:19, Chris Wilson wrote:
> > Quoting Antonio Argenziano (2019-03-27 21:05:52)
> >>
> >>
> >> On 25/03/19 16:36, Chris Wilson wrote:
> >>> Quoting Antonio Argenziano (2019-03-25 23:20:41)
> >>>> diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
> >>>> index a9383000..15c8440f 100644
> >>>> --- a/tests/i915/gem_exec_schedule.c
> >>>> +++ b/tests/i915/gem_exec_schedule.c
> >>>> @@ -1236,6 +1236,7 @@ igt_main
> >>>>                           igt_subtest_f("independent-%s", e->name) {
> >>>>                                   igt_require(gem_ring_has_physical_engine(fd, e->exec_id | e->flags));
> >>>>                                   igt_require(gem_can_store_dword(fd, e->exec_id | e->flags));
> >>>> +                               gem_require_mmap_gtt(fd);
> >>>>                                   independent(fd, e->exec_id | e->flags);
> >>>>                           }
> >>>>                   }
> >>>> @@ -1328,8 +1329,10 @@ igt_main
> >>>>                                   igt_subtest_f("wide-%s", e->name)
> >>>>                                           wide(fd, e->exec_id | e->flags);
> >>>>    
> >>>> -                               igt_subtest_f("reorder-wide-%s", e->name)
> >>>> +                               igt_subtest_f("reorder-wide-%s", e->name) {
> >>>> +                                       gem_require_mmap_gtt(fd);
> >>>>                                           reorder_wide(fd, e->exec_id | e->flags);
> >>>> +                               }
> >>>>    
> >>>>                                   igt_subtest_f("smoketest-%s", e->name)
> >>>>                                           smoketest(fd, e->exec_id | e->flags, 5);
> >>>
> >>> Hmm. I would rather the basic scheduling tests remained functioning.
> >>
> >> Didn't we have a convincing argument against using wc + sync?
> > 
> > Just the sync part iirc. So you just need to come up with an alternative
> > solution. What I've used elsewhere is to write the ring timestamp from
> > each batch and verify they are in the order I expect. That should work
> > just fine with anything... (The most complicated thing there is actually
> > determining the engine->mmio_base, and really we'd be better exporting
> > that from the kernel for simplicity.)
> 
> I think I'm missing something, the issue we had was the async update of 
> the single BO we use for all submissions (at least for reorder-wide) 
> needed to go though gtt mapping, wouldn't that still be there even if we 
> change the contents of the batch?

I mean it should be possible to prove the scheduling order without
relying on modifying the batches. The timestamp is a good indicator of
the order, the only question is in setting up the submission to force a
scheduling decision -- and that usually means a fence to delay HW
submission until after all execbufs.

Losing these tests for future gen should be enough motivation to devise
a new set that exercise the same paths through the scheduler without the
drawable of needing async gtt modifications (if it was just async gtt,
async wc should be fine though -- I've forgotten the problem we ran into!).
-Chris


More information about the igt-dev mailing list