]> git.baikalelectronics.ru Git - kernel.git/commitdiff
drm/i915/selftests: Try to recycle context allocations
authorChris Wilson <chris@chris-wilson.co.uk>
Tue, 27 Aug 2019 16:17:26 +0000 (17:17 +0100)
committerChris Wilson <chris@chris-wilson.co.uk>
Wed, 28 Aug 2019 07:32:02 +0000 (08:32 +0100)
igt_ctx_exec allocates a new context for each iteration, keeping them
all allocated until the end. Instead, release the local ctx reference at
the end of each iteration, allowing ourselves to reap those if under
mempressure.

Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Reviewed-by: Matthew Auld <matthew.auld@intel.com>
Link: https://patchwork.freedesktop.org/patch/msgid/20190827161726.3640-2-chris@chris-wilson.co.uk
drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c

index 63116c4fa8ba9adb71739672d8f48569bda34b75..da54a718c7129f18c529654f62e774d738a33182 100644 (file)
@@ -424,7 +424,7 @@ static int igt_ctx_exec(void *arg)
                        struct i915_gem_context *ctx;
                        struct intel_context *ce;
 
-                       ctx = live_context(i915, file);
+                       ctx = kernel_context(i915);
                        if (IS_ERR(ctx)) {
                                err = PTR_ERR(ctx);
                                goto out_unlock;
@@ -438,6 +438,7 @@ static int igt_ctx_exec(void *arg)
                                if (IS_ERR(obj)) {
                                        err = PTR_ERR(obj);
                                        intel_context_put(ce);
+                                       kernel_context_close(ctx);
                                        goto out_unlock;
                                }
                        }
@@ -449,12 +450,14 @@ static int igt_ctx_exec(void *arg)
                                       engine->name, ctx->hw_id,
                                       yesno(!!ctx->vm), err);
                                intel_context_put(ce);
+                               kernel_context_close(ctx);
                                goto out_unlock;
                        }
 
                        err = throttle(ce, tq, ARRAY_SIZE(tq));
                        if (err) {
                                intel_context_put(ce);
+                               kernel_context_close(ctx);
                                goto out_unlock;
                        }
 
@@ -467,6 +470,7 @@ static int igt_ctx_exec(void *arg)
                        ncontexts++;
 
                        intel_context_put(ce);
+                       kernel_context_close(ctx);
                }
 
                pr_info("Submitted %lu contexts to %s, filling %lu dwords\n",