[PATCH 1/3] drm/i915: Wait for render state init

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



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





[Index of Archives]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]
  Powered by Linux