DF-5220 / fix.diff
diff --git a/sys/dev/drm/i915/intel_lrc.c b/sys/dev/drm/i915/intel_lrc.c index 0b0fdf5..50fff36 100644 --- a/sys/dev/drm/i915/intel_lrc.c +++ b/sys/dev/drm/i915/intel_lrc.c @@ -2494,8 +2494,11 @@ int logical_render_ring_init(struct intel_engine_cs *engine) engine->emit_breadcrumb_sz = gen8_emit_breadcrumb_rcs_sz; ret = logical_ring_init(engine); - if (ret) + if (ret) { + /* engine->timeline was linked by intel_engine_setup_common() */ + intel_engine_cleanup_common(engine); return ret; + } ret = intel_init_workaround_bb(engine); if (ret) { @@ -2515,9 +2518,15 @@ int logical_render_ring_init(struct intel_engine_cs *engine) int logical_xcs_ring_init(struct intel_engine_cs *engine) { + int ret; + logical_ring_setup(engine); - return logical_ring_init(engine); + ret = logical_ring_init(engine); + if (ret) + intel_engine_cleanup_common(engine); + + return ret; } static u32 |