[Intel-gfx] [PATCH 14/19] drm/i915: Move context initialisation to first-use
Joonas Lahtinen
joonas.lahtinen at linux.intel.com
Thu Apr 21 07:47:30 UTC 2016
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
More information about the Intel-gfx
mailing list