[igt-dev] [PATCH i-g-t 1/7] gem_wsim: Check sleep times

Chris Wilson chris at chris-wilson.co.uk
Tue Aug 14 15:27:46 UTC 2018


Quoting Tvrtko Ursulin (2018-08-14 16:21:08)
> 
> On 14/08/2018 16:09, Chris Wilson wrote:
> > Quoting Tvrtko Ursulin (2018-08-14 16:05:13)
> >> From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> >>
> >> Notice in more places if we are running behind.
> >>
> >> Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> >> ---
> >>   benchmarks/gem_wsim.c | 52 ++++++++++++++++++++++++++++++++++++++-----
> >>   1 file changed, 46 insertions(+), 6 deletions(-)
> >>
> >> diff --git a/benchmarks/gem_wsim.c b/benchmarks/gem_wsim.c
> >> index 80f180829241..ead91b0f009b 100644
> >> --- a/benchmarks/gem_wsim.c
> >> +++ b/benchmarks/gem_wsim.c
> >> @@ -1718,6 +1718,21 @@ static bool sync_deps(struct workload *wrk, struct w_step *w)
> >>          return synced;
> >>   }
> >>   
> >> +static unsigned int measured_usleep(unsigned int usec)
> >> +{
> >> +       struct timespec ts = { };
> >> +       unsigned int slept;
> >> +
> >> +       slept = igt_nsec_elapsed(&ts);
> >> +       igt_assert(slept == 0);
> >> +       do {
> >> +               usleep(usec - slept);
> >> +               slept = igt_nsec_elapsed(&ts) / 1000;
> >> +       } while (slept < usec);
> >> +
> >> +       return igt_nsec_elapsed(&ts);
> >> +}
> >> +
> >>   static void *run_workload(void *data)
> >>   {
> >>          struct workload *wrk = (struct workload *)data;
> >> @@ -1739,7 +1754,7 @@ static void *run_workload(void *data)
> >>               count++) {
> >>                  unsigned int cur_seqno = wrk->sync_seqno;
> >>   
> >> -               clock_gettime(CLOCK_MONOTONIC, &wrk->repeat_start);
> >> +               igt_gettime(&wrk->repeat_start);
> > 
> > Were you already linking against libigt?
> > This code is not set up to hit an igt_assert()...
> 
> This code meaning gem_wsim? There's a lot of asserts in it already, and 
> when they trigger traceback looks fine. What do you think is missing?

We have different values of fine ;) Looks nothing but a mess for me.
I don't think igt itself has much value outside of being the test
runner, we've baked too much knowledge of it being a test harness into
the code (and in many cases work to reduce those assumptions). I'd
rather libigtcore be distinct and not bring in the interlinked
igt_subtest+igt_assert.
-Chris


More information about the igt-dev mailing list