<html>
<head>
<base href="https://bugs.freedesktop.org/">
</head>
<body>
<p>
<div>
<b><a class="bz_bug_link
bz_status_NEW "
title="NEW - [v4.10 snb] weird seqno/request tracking"
href="https://bugs.freedesktop.org/show_bug.cgi?id=99671#c34">Comment # 34</a>
on <a class="bz_bug_link
bz_status_NEW "
title="NEW - [v4.10 snb] weird seqno/request tracking"
href="https://bugs.freedesktop.org/show_bug.cgi?id=99671">bug 99671</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>dmesg & error are just what I need. (If I need anything else, the goal is to
add it to the error state.)
Onto the next theory, a few more asserts:
diff --git a/drivers/gpu/drm/i915/intel_ringbuffer.c
b/drivers/gpu/drm/i915/intel_ringbuffer.c
index 4ffa35f..5a7c140 100644
--- a/drivers/gpu/drm/i915/intel_ringbuffer.c
+++ b/drivers/gpu/drm/i915/intel_ringbuffer.c
@@ -44,6 +44,7 @@ static int __intel_ring_space(int head, int tail, int size)
int space = head - tail;
if (space <= 0)
space += size;
+ GEM_BUG_ON(space <= I915_RING_FREE_SPACE);
return space - I915_RING_FREE_SPACE;
}
@@ -1682,6 +1683,8 @@ u32 *intel_ring_begin(struct drm_i915_gem_request *req,
int num_dwords)
wait_bytes = total_bytes;
}
+ GEM_BUG_ON(ring->space > __intel_ring_space(ring->head & HEAD_ADDR,
+ ring->tail, ring->size));
if (wait_bytes > ring->space) {
int ret = wait_for_space(req, wait_bytes);
if (unlikely(ret))
@@ -1698,6 +1701,7 @@ u32 *intel_ring_begin(struct drm_i915_gem_request *req,
int num_dwords)
ring->space -= remain_actual;
}
+ GEM_BUG_ON(bytes > ring->space);
GEM_BUG_ON(ring->tail > ring->size - bytes);
cs = ring->vaddr + ring->tail;
ring->tail += bytes;</pre>
</div>
</p>
<hr>
<span>You are receiving this mail because:</span>
<ul>
<li>You are the assignee for the bug.</li>
<li>You are the QA Contact for the bug.</li>
<li>You are on the CC list for the bug.</li>
</ul>
</body>
</html>