<html>
    <head>
      <base href="https://bugs.freedesktop.org/">
    </head>
    <body>
      <p>
        <div>
            <b><a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [IGT] gem_ctx_thrash single test assertion failure on function gem_set_domain"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=102936#c3">Comment # 3</a>
              on <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [IGT] gem_ctx_thrash single test assertion failure on function gem_set_domain"
   href="https://bugs.freedesktop.org/show_bug.cgi?id=102936">bug 102936</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>commit 1ab22356b37ab08a391d6f007fda4c822bef9fb5
Author: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>>
Date:   Tue Nov 7 22:06:56 2017 +0000

    drm/i915: Prune the reservation shared fence array

    The shared fence array is not autopruning and may continue to grow as an
    object is shared between new timelines. Take the opportunity when we
    think the object is idle (we have to confirm that any external fence is
    also signaled) to decouple all the fences.

    We apply a similar trick after waiting on an object, see commit
    e54ca9774777 ("drm/i915: Remove completed fences after a wait")

    v2: No longer need to handle the batch pool as a special case.
    v3: Need to trylock from within i915_vma_retire as this may be called
    form the shrinker - and we may later try to allocate underneath the
    reservation lock, so a deadlock is possible.

    References: <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [IGT] gem_ctx_thrash single test assertion failure on function gem_set_domain"
   href="show_bug.cgi?id=102936">https://bugs.freedesktop.org/show_bug.cgi?id=102936</a>
    Fixes: d07f0e59b2c7 ("drm/i915: Move GEM activity tracking into a common
struct reservation_object")
    Fixes: 80b204bce8f2 ("drm/i915: Enable multiple timelines")
    Signed-off-by: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>>
    Cc: Joonas Lahtinen <<a href="mailto:joonas.lahtinen@linux.intel.com">joonas.lahtinen@linux.intel.com</a>>
    Link:
<a href="https://patchwork.freedesktop.org/patch/msgid/20171107220656.5020-1-chris@chris-wilson.co.uk">https://patchwork.freedesktop.org/patch/msgid/20171107220656.5020-1-chris@chris-wilson.co.uk</a>
    Reviewed-by: Joonas Lahtinen <<a href="mailto:joonas.lahtinen@linux.intel.com">joonas.lahtinen@linux.intel.com</a>>

commit 2f6a3783833dde63f1c08982943a8b2229b97afb
Author: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>>
Date:   Wed Nov 8 09:44:00 2017 +0000

    drm/i915: Idle the GPU before shinking everything

    The handling of contexts are peculiar. Instead of tieing their vma to
    activity, we pin the context. This means that we cannot simply unbind
    the context object itself at will (which would normally cause us to wait
    for the vma to be idle), but must manually idle the GPU and retire
    requests first.

    A consequence of this peculiarity is when doing a last desperate attempt
    to recover memory. If the memory is tied up inside active context
    objects, we will fail to recover any memory simply by trying to unbind
    the objects without first doing a wait-for-idle.

    A side-effect of removing the call to shrinker_lock_uninterruptible()
    from i915_gem_shrinker_oom() was that we removed an unlocked
    wait-for-idle, and so lost the "natural" shrinkage of context objects.
    By replacing that with a locked wait from inside i915_gem_shrink(), we
    not only replace it with the ability to recover all context objects, but
    do so for all i915_gem_shrink_all() callers.

    v2: Switching requires request allocation, which is not permitted from
    inside the shrinker as it only uses ordinary allocations.

    References: <a class="bz_bug_link 
          bz_status_NEW "
   title="NEW - [IGT] gem_ctx_thrash single test assertion failure on function gem_set_domain"
   href="show_bug.cgi?id=102936">https://bugs.freedesktop.org/show_bug.cgi?id=102936</a>
    Fixes: f2123818ffad ("drm/i915: Move dev_priv->mm.[un]bound_list to its own
lock")
    Signed-off-by: Chris Wilson <<a href="mailto:chris@chris-wilson.co.uk">chris@chris-wilson.co.uk</a>>
    Cc: Joonas Lahtinen <<a href="mailto:joonas.lahtinen@linux.intel.com">joonas.lahtinen@linux.intel.com</a>>
    Link:
<a href="https://patchwork.freedesktop.org/patch/msgid/20171108094400.1386-1-chris@chris-wilson.co.uk">https://patchwork.freedesktop.org/patch/msgid/20171108094400.1386-1-chris@chris-wilson.co.uk</a>
    Reviewed-by: Joonas Lahtinen <<a href="mailto:joonas.lahtinen@linux.intel.com">joonas.lahtinen@linux.intel.com</a>>

should help a lot. Still expect that this test (but not this subtest) will fail
if you let it run long enough.</pre>
        </div>
      </p>


      <hr>
      <span>You are receiving this mail because:</span>

      <ul>
          <li>You are on the CC list for the bug.</li>
          <li>You are the assignee for the bug.</li>
          <li>You are the QA Contact for the bug.</li>
      </ul>
    </body>
</html>