<html>
    <head>
      <base href="https://bugs.freedesktop.org/" />
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - Buffer Object corruption with multiple processes"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=62191#c8">Comment # 8</a>
              on <a class="bz_bug_link 
          bz_status_REOPENED "
   title="REOPENED --- - Buffer Object corruption with multiple processes"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=62191">bug 62191</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>Hack du jour to prevent fence migration:

diff --git a/drivers/gpu/drm/i915/i915_gem.c b/drivers/gpu/drm/i915/i915_gem.c
index 19fc21b..52240f8 100644
--- a/drivers/gpu/drm/i915/i915_gem.c
+++ b/drivers/gpu/drm/i915/i915_gem.c
@@ -2759,7 +2759,10 @@ i915_find_fence_reg(struct drm_device *dev)
     }

     if (avail == NULL)
-        return NULL;
+        return ERR_PTR(-EDEADLK);
+
+    set_need_resched();
+    return ERR_PTR(-EAGAIN);

     /* None available, try to steal one or wait for a user to finish */
     list_for_each_entry(reg, &dev_priv->mm.fence_list, lru_list) {
@@ -2814,8 +2817,8 @@ i915_gem_object_get_fence(struct drm_i915_gem_object
*obj)
         }
     } else if (enable) {
         reg = i915_find_fence_reg(dev);
-        if (reg == NULL)
-            return -EDEADLK;
+        if (IS_ERR(reg))
+            return PTR_ERR(reg);

         if (reg->obj) {
             struct drm_i915_gem_object *old = reg->obj;</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>
      </ul>
    </body>
</html>