Quoting Chris Wilson (2017-10-12 13:57:26) > + count = 0; > + mutex_lock(&i915->drm.struct_mutex); > + onstack_fence_init(&fence); > + do { > + struct drm_i915_gem_request *rq; > + struct i915_gem_context *ctx; > + > + ctx = live_context(i915, file); > + if (!ctx) > + break; > + > + igt_evict_ctl.fail_if_busy = true; > + rq = i915_gem_request_alloc(engine, ctx); > + igt_evict_ctl.fail_if_busy = false; > + > + if (IS_ERR(rq)) { > + /* When full, fail_if_busy will trigger -EBUSY */ > + if (PTR_ERR(rq) != -EBUSY) { > + pr_err("Unexpected error from request alloc (ctx hw id %u, on %s): %d\n", > + ctx->hw_id, engine->name, > + (int)PTR_ERR(rq)); > + err = PTR_ERR(rq); > + } > + break; > + } > + > + /* Keep every request busy until we are full */ > + err = i915_sw_fence_await_sw_fence_gfp(&rq->submit, > + &fence, > + GFP_KERNEL); > + if (err < 0) > + break; > + > + i915_add_request(rq); > + count++; > + err = 0; > + } while(!i915_sw_fence_done(&fence)); This should now just be } while (1); The only escape is when we hit EBUSY upon filling the GGTT. -Chris _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx