[Intel-gfx] [PATCH 11/40] drm/i915/execlists: Onion unwind for logical_ring_init() failure
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Thu Sep 20 14:21:47 UTC 2018
On 19/09/2018 20:55, Chris Wilson wrote:
> Fix up the error unwind for logical_ring_init() failing by moving the
Could you say in the commit what was broken?
Regards,
Tvrtko
> cleanup into the callers who own the various bits of state during
> initialisation.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
> drivers/gpu/drm/i915/intel_lrc.c | 18 +++++++++++-------
> 1 file changed, 11 insertions(+), 7 deletions(-)
>
> diff --git a/drivers/gpu/drm/i915/intel_lrc.c b/drivers/gpu/drm/i915/intel_lrc.c
> index b4448b05d78a..3edb417caa7b 100644
> --- a/drivers/gpu/drm/i915/intel_lrc.c
> +++ b/drivers/gpu/drm/i915/intel_lrc.c
> @@ -2415,7 +2415,7 @@ static int logical_ring_init(struct intel_engine_cs *engine)
>
> ret = intel_engine_init_common(engine);
> if (ret)
> - goto error;
> + return ret;
>
> if (HAS_LOGICAL_RING_ELSQ(i915)) {
> execlists->submit_reg = i915->regs +
> @@ -2457,10 +2457,6 @@ static int logical_ring_init(struct intel_engine_cs *engine)
> reset_csb_pointers(execlists);
>
> return 0;
> -
> -error:
> - intel_logical_ring_cleanup(engine);
> - return ret;
> }
>
> int logical_render_ring_init(struct intel_engine_cs *engine)
> @@ -2483,10 +2479,14 @@ int logical_render_ring_init(struct intel_engine_cs *engine)
> engine->emit_breadcrumb = gen8_emit_breadcrumb_rcs;
> engine->emit_breadcrumb_sz = gen8_emit_breadcrumb_rcs_sz;
>
> - ret = intel_engine_create_scratch(engine, PAGE_SIZE);
> + ret = logical_ring_init(engine);
> if (ret)
> return ret;
>
> + ret = intel_engine_create_scratch(engine, PAGE_SIZE);
> + if (ret)
> + goto err_cleanup_common;
> +
> ret = intel_init_workaround_bb(engine);
> if (ret) {
> /*
> @@ -2498,7 +2498,11 @@ int logical_render_ring_init(struct intel_engine_cs *engine)
> ret);
> }
>
> - return logical_ring_init(engine);
> + return 0;
> +
> +err_cleanup_common:
> + intel_engine_cleanup_common(engine);
> + return ret;
> }
>
> int logical_xcs_ring_init(struct intel_engine_cs *engine)
>
More information about the Intel-gfx
mailing list