<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [SNB] [i915] GPU HANG: ecode 6:0:0x85fffffc, in aquaria [2893], reason: Hang on render ring, action: reset"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=99977#c12">Comment # 12</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [SNB] [i915] GPU HANG: ecode 6:0:0x85fffffc, in aquaria [2893], reason: Hang on render ring, action: reset"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=99977">bug 99977</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>(In reply to Jan Nordholz from <a href="show_bug.cgi?id=99977#c10">comment #10</a>)
<span class="quote">> Created <span class=""><a href="attachment.cgi?id=129968" name="attach_129968" title="kernel lockdep error, drm-tip, unpatched">attachment 129968</a> <a href="attachment.cgi?id=129968&action=edit" title="kernel lockdep error, drm-tip, unpatched">[details]</a></span>
> kernel lockdep error, drm-tip, unpatched

> Rebuilt the drm-tip kernel with lockdep on - got this.</span >

Oh. I actually fixed that earlier and then wrote another patch with exactly the
same problem.

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 4c645f8ab05d..561deab3aff6 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -466,10 +466,11 @@ i915_gem_object_wait_reservation(struct
reservation_object *resv,
        dma_fence_put(excl);

        if (prune_fences && !__read_seqcount_retry(&resv->seq, seq)) {
-               reservation_object_lock(resv, NULL);
-               if (!__read_seqcount_retry(&resv->seq, seq))
-                       reservation_object_add_excl_fence(resv, NULL);
-               reservation_object_unlock(resv);
+               if (reservation_object_trylock(resv, NULL)) {
+                       if (!__read_seqcount_retry(&resv->seq, seq))
+                               reservation_object_add_excl_fence(resv, NULL);
+                       reservation_object_unlock(resv);
+               }
        }

        return timeout;</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 the assignee for the bug.</li>
          <li>You are on the CC list for the bug.</li>
      </ul>
    </body>
</html>