[Intel-gfx] [PATCH 1/9] drm/i915/selftests: Take a ref to the request we wait upon
Chris Wilson
chris at chris-wilson.co.uk
Wed Nov 20 10:25:28 UTC 2019
Quoting Matthew Auld (2019-11-20 10:19:56)
> On Wed, 20 Nov 2019 at 09:33, Chris Wilson <chris at chris-wilson.co.uk> wrote:
> >
> > i915_request_add() consumes the passed in reference to the i915_request,
> > so if the selftest caller wishes to wait upon it afterwards, it needs to
> > take a reference for itself.
> >
> > Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> > ---
> > .../drm/i915/gem/selftests/i915_gem_context.c | 38 ++++++++++++++-----
> > 1 file changed, 29 insertions(+), 9 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
> > index 9a509c18b7c7..16df814f3efd 100644
> > --- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
> > +++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
> > @@ -73,25 +73,34 @@ static int live_nop_switch(void *arg)
> > }
> >
> > for_each_uabi_engine(engine, i915) {
> > - struct i915_request *rq;
> > + struct i915_request *rq = NULL;
> > unsigned long end_time, prime;
> > ktime_t times[2] = {};
> >
> > times[0] = ktime_get_raw();
> > for (n = 0; n < nctx; n++) {
> > - rq = igt_request_alloc(ctx[n], engine);
> > - if (IS_ERR(rq)) {
> > - err = PTR_ERR(rq);
> > + struct i915_request *this;
> > +
> > + this = igt_request_alloc(ctx[n], engine);
> > + if (IS_ERR(this)) {
> > + err = PTR_ERR(this);
> > goto out_file;
> > }
> > - i915_request_add(rq);
> > + if (rq) {
> > + i915_request_await_dma_fence(this, &rq->fence);
> > + i915_request_put(rq);
> > + }
> > + rq = i915_request_get(this);
> > + i915_request_add(this);
> > }
> > if (i915_request_wait(rq, 0, HZ / 5) < 0) {
> > pr_err("Failed to populated %d contexts\n", nctx);
> > intel_gt_set_wedged(&i915->gt);
> > + i915_request_put(rq);
> > err = -EIO;
> > goto out_file;
> > }
> > + i915_request_put(rq);
> >
> > times[1] = ktime_get_raw();
> >
> > @@ -106,13 +115,21 @@ static int live_nop_switch(void *arg)
> > for_each_prime_number_from(prime, 2, 8192) {
> > times[1] = ktime_get_raw();
> >
> > + rq = NULL;
> > for (n = 0; n < prime; n++) {
> > - rq = igt_request_alloc(ctx[n % nctx], engine);
> > - if (IS_ERR(rq)) {
> > - err = PTR_ERR(rq);
> > + struct i915_request *this;
> > +
> > + this = igt_request_alloc(ctx[n % nctx], engine);
> > + if (IS_ERR(this)) {
> > + err = PTR_ERR(this);
> > goto out_file;
> > }
> >
> > + if (this) { /* Force submission order */
>
> if (rq) ?
Yes. Still distinct lack of coffee.
-Chris
More information about the Intel-gfx
mailing list