[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