We are freeing the batch that is just pushed to ring. Further, other ring inits should assume that the render context with the workarounds are pushed before their rings execute anything. This fixes (or papers over) a problem where with full ppgtt the blitter ring init sometimes fails, where the blt ring ACTHD runs wild through the address space until eventually hangcheck kills it. With dynamic page table series this problem became more easily reproduced by just normal boot failing to init blt ring, instead of torturing init with gem_reset_stats. Testcase: igt/gem_reset_stats --r ban-blt Signed-off-by: Mika Kuoppala <mika.kuoppala@xxxxxxxxx> --- drivers/gpu/drm/i915/i915_gem_render_state.c | 4 ++++ 1 file changed, 4 insertions(+) diff --git a/drivers/gpu/drm/i915/i915_gem_render_state.c b/drivers/gpu/drm/i915/i915_gem_render_state.c index 521548a..9484c64 100644 --- a/drivers/gpu/drm/i915/i915_gem_render_state.c +++ b/drivers/gpu/drm/i915/i915_gem_render_state.c @@ -175,6 +175,10 @@ int i915_gem_render_state_init(struct intel_engine_cs *ring) ret = __i915_add_request(ring, NULL, so.obj); /* __i915_add_request moves object to inactive if it fails */ + if (ret) + goto out; + + ret = intel_ring_idle(ring); out: i915_gem_render_state_fini(&so); return ret; -- 1.9.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx