<html>
<head>
<base href="https://bugs.freedesktop.org/" />
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEEDINFO "
title="NEEDINFO --- - [gm45 regression] [drm:init_ring_common]: *ERROR* render ring initialization failed"
href="https://bugs.freedesktop.org/show_bug.cgi?id=76554#c22">Comment # 22</a>
on <a class="bz_bug_link
bz_status_NEEDINFO "
title="NEEDINFO --- - [gm45 regression] [drm:init_ring_common]: *ERROR* render ring initialization failed"
href="https://bugs.freedesktop.org/show_bug.cgi?id=76554">bug 76554</a>
from <span class="vcard"><a class="email" href="mailto:chris@chris-wilson.co.uk" title="Chris Wilson <chris@chris-wilson.co.uk>"> <span class="fn">Chris Wilson</span></a>
</span></b>
<pre>One more random rearrangement that should apply on top of that branch:
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 602432eaf346..bbcd6b5446f3 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -456,9 +456,9 @@ static bool stop_ring(struct intel_ring_buffer *ring)
}
}
+ I915_WRITE_CTL(ring, 0);
I915_WRITE_HEAD(ring, 0);
ring->write_tail(ring, 0);
- I915_WRITE_CTL(ring, 0);
if (!IS_GEN2(ring->dev)) {
(void)I915_READ_CTL(ring);
@@ -513,18 +513,19 @@ static int init_ring_common(struct intel_ring_buffer
*ring)
I915_WRITE_CTL(ring,
((ring->size - PAGE_SIZE) & RING_NR_PAGES)
| RING_VALID);
+ I915_WRITE_HEAD(ring, 0);
+ ring->write_tail(ring, 0);
/* If the head is still not zero, the ring is dead */
if (wait_for((I915_READ_CTL(ring) & RING_VALID) != 0 &&
I915_READ_START(ring) == i915_gem_obj_ggtt_offset(obj) &&
(I915_READ_HEAD(ring) & HEAD_ADDR) == 0, 50)) {
DRM_ERROR("%s initialization failed "
- "ctl %08x head %08x tail %08x start %08x\n",
- ring->name,
- I915_READ_CTL(ring),
- I915_READ_HEAD(ring),
- I915_READ_TAIL(ring),
- I915_READ_START(ring));
+ "ctl %08x (valid? %d) head %08x tail %08x start %08x [expected
%08x]\n",
+ ring->name,
+ I915_READ_CTL(ring), I915_READ_CTL(ring) & RING_VALID,
+ I915_READ_HEAD(ring), I915_READ_TAIL(ring),
+ I915_READ_START(ring), i915_gem_obj_ggtt_offset(obj));
ret = -EIO;
goto out;
}
You may also want to cherry-pick ec9da60002b2390a3932db36d61d1d4e30c4ee21 from
the <a class="bz_bug_link
bz_status_NEEDINFO "
title="NEEDINFO --- - [gm45 regression] [drm:init_ring_common]: *ERROR* render ring initialization failed"
href="show_bug.cgi?id=76554">bug76554</a> branch to prevent uxa from freezing.</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the QA Contact for the bug.</li>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>