[igt-dev] [PATCH i-g-t] i915: Exercise I915_CONTEXT_PARAM_RINGSIZE
Chris Wilson
chris at chris-wilson.co.uk
Fri Feb 21 14:06:21 UTC 2020
Quoting Janusz Krzysztofik (2020-02-21 13:57:26)
> Hi Chris,
>
> On Friday, February 21, 2020 10:43:21 AM CET Chris Wilson wrote:
> > +static unsigned int measure_inflight(int i915, unsigned int engine, int timeout)
> > +{
> > + IGT_CORK_FENCE(cork);
> > + struct drm_i915_gem_exec_object2 obj = {
> > + .handle = batch_create(i915)
> > + };
> > + struct drm_i915_gem_execbuffer2 execbuf = {
> > + .buffers_ptr = to_user_pointer(&obj),
> > + .buffer_count = 1,
> > + .flags = engine | I915_EXEC_FENCE_IN,
> > + .rsvd2 = igt_cork_plug(&cork, i915),
> > + };
> > + unsigned int count;
> > + int err;
> > +
> > + fcntl(i915, F_SETFL, fcntl(i915, F_GETFL) | O_NONBLOCK);
> > + igt_set_timeout(timeout, "execbuf blocked!");
> > +
> > + gem_execbuf(i915, &execbuf);
> > + for (count = 1; (err = __execbuf(i915, &execbuf)) == 0; count++)
> > + ;
> > + igt_assert_eq(err, -EWOULDBLOCK);
> > + close(execbuf.rsvd2);
> > +
> > + igt_reset_timeout();
>
> Why not right after the 'for' loop is exited? Don't we unnecessarily risk
> a race condition?
Just style, I like the grouping of the extended gem_execbuf() into a
single visual block. Either way it's a few instructions, negligible in
the grand scheme of unserialised code. We need a considerable safety
factor in any case, and yet small enough that we don't accidentally pass
with a random hangcheck.
-Chris
More information about the igt-dev
mailing list