Merge drm-next into drm-intel-next-queued
[sfrench/cifs-2.6.git] / drivers / gpu / drm / i915 / i915_gem_evict.c
index 8daa8a78cdc06897ab3b75d1b582dd886231c17c..54814a196ee4d3fe99d16a72083a926595eda6d6 100644 (file)
@@ -46,7 +46,7 @@ static bool ggtt_is_idle(struct drm_i915_private *i915)
               return false;
 
        for_each_engine(engine, i915, id) {
-              if (engine->last_retired_context != i915->kernel_context)
+              if (!intel_engine_has_kernel_context(engine))
                       return false;
        }
 
@@ -73,6 +73,7 @@ static int ggtt_flush(struct drm_i915_private *i915)
        if (err)
                return err;
 
+       GEM_BUG_ON(!ggtt_is_idle(i915));
        return 0;
 }
 
@@ -167,7 +168,7 @@ i915_gem_evict_something(struct i915_address_space *vm,
         * retiring.
         */
        if (!(flags & PIN_NONBLOCK))
-               i915_gem_retire_requests(dev_priv);
+               i915_retire_requests(dev_priv);
        else
                phases[1] = NULL;
 
@@ -216,6 +217,7 @@ search_again:
                if (ret)
                        return ret;
 
+               cond_resched();
                goto search_again;
        }
 
@@ -291,7 +293,7 @@ int i915_gem_evict_for_node(struct i915_address_space *vm,
         * retiring.
         */
        if (!(flags & PIN_NONBLOCK))
-               i915_gem_retire_requests(vm->i915);
+               i915_retire_requests(vm->i915);
 
        check_color = vm->mm.color_adjust;
        if (check_color) {