[Intel-gfx] [PATCH 17/27] drm/i915/gem: Rework error handling in default_engines

Jason Ekstrand jason at jlekstrand.net
Fri May 14 18:21:16 UTC 2021


On Tue, May 4, 2021 at 11:17 AM Daniel Vetter <daniel at ffwll.ch> wrote:
>
> On Mon, May 03, 2021 at 10:57:38AM -0500, Jason Ekstrand wrote:
> > Since free_engines works for partially constructed engine sets, we can
> > use the usual goto pattern.
> >
> > Signed-off-by: Jason Ekstrand <jason at jlekstrand.net>
>
> I guess subsequent patches apply the same for the set_engines command and
> __free_engines disappears? Otherwise feels a bit silly.

Working towards that.

> Anyway looks correct.
>
> Reviewed-by: Daniel Vetter <daniel.vetter at ffwll.ch>
>
> > ---
> >  drivers/gpu/drm/i915/gem/i915_gem_context.c | 13 ++++++++-----
> >  1 file changed, 8 insertions(+), 5 deletions(-)
> >
> > diff --git a/drivers/gpu/drm/i915/gem/i915_gem_context.c b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> > index 10bd1b6dd1774..ce729e640bbf7 100644
> > --- a/drivers/gpu/drm/i915/gem/i915_gem_context.c
> > +++ b/drivers/gpu/drm/i915/gem/i915_gem_context.c
> > @@ -420,7 +420,7 @@ static struct i915_gem_engines *default_engines(struct i915_gem_context *ctx)
> >  {
> >       const struct intel_gt *gt = &ctx->i915->gt;
> >       struct intel_engine_cs *engine;
> > -     struct i915_gem_engines *e;
> > +     struct i915_gem_engines *e, *err;
> >       enum intel_engine_id id;
> >
> >       e = alloc_engines(I915_NUM_ENGINES);
> > @@ -438,18 +438,21 @@ static struct i915_gem_engines *default_engines(struct i915_gem_context *ctx)
> >
> >               ce = intel_context_create(engine);
> >               if (IS_ERR(ce)) {
> > -                     __free_engines(e, e->num_engines + 1);
> > -                     return ERR_CAST(ce);
> > +                     err = ERR_CAST(ce);
> > +                     goto free_engines;
> >               }
> >
> >               intel_context_set_gem(ce, ctx);
> >
> >               e->engines[engine->legacy_idx] = ce;
> > -             e->num_engines = max(e->num_engines, engine->legacy_idx);
> > +             e->num_engines = max(e->num_engines, engine->legacy_idx + 1);
> >       }
> > -     e->num_engines++;
> >
> >       return e;
> > +
> > +free_engines:
> > +     free_engines(e);
> > +     return err;
> >  }
> >
> >  void i915_gem_context_release(struct kref *ref)
> > --
> > 2.31.1
> >
> > _______________________________________________
> > Intel-gfx mailing list
> > Intel-gfx at lists.freedesktop.org
> > https://lists.freedesktop.org/mailman/listinfo/intel-gfx
>
> --
> Daniel Vetter
> Software Engineer, Intel Corporation
> http://blog.ffwll.ch


More information about the dri-devel mailing list