On to, 2016-04-21 at 08:08 +0100, Chris Wilson wrote:
> On Thu, Apr 21, 2016 at 09:57:03AM +0300, Joonas Lahtinen wrote:
> > 
> > On ke, 2016-04-20 at 19:42 +0100, Chris Wilson wrote:
> > > 
> > > + if (!request->ctx->engine[engine->id].initialised) {
> > > +         ret = engine->init_context(request);
> > > +         if (ret) {
> > > +                 intel_lr_context_unpin(request->ctx, engine);
> > I prefer the goto teardown path, it's easy to read and modify later on.

Meant something like this which is functionally the same but less
nesting;

        if (request->ctx->engine[engine->id].initialised)
                return 0;

        ret = engine->init_context(request);
        if (ret)
                goto out_unpin;

        request->ctx->engine[engine->id].initialised = true;

        return 0;

out_unpin:
        intel_lr_context_unpin(request->ctx, engine);

        return ret;
}

> Ah, that would lead to bugs here. After we emit init_context on this
> request, the request must run to completion as the request itself tracks
> modification to global data, e.g. the ctx->initialised flag here and the
> golden render state object's liveness tracking.
> 
> Well that deserves a comment!
> -Chris
> 
-- 
Joonas Lahtinen
Open Source Technology Center
Intel Corporation
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to