Ensure that we minimally exercise the aliasing_ppgtt, even on a
full-ppgtt, by allocating one and similarly creating a context to use
it.

Signed-off-by: Chris Wilson <[email protected]>
---
 drivers/gpu/drm/i915/selftests/i915_gem_context.c | 27 ++++++++++++++++++++---
 1 file changed, 24 insertions(+), 3 deletions(-)

diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_context.c 
b/drivers/gpu/drm/i915/selftests/i915_gem_context.c
index 00257949e195..6d3eca8c0c09 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_context.c
@@ -325,6 +325,7 @@ static int igt_ctx_exec(void *arg)
        IGT_TIMEOUT(end_time);
        LIST_HEAD(objects);
        unsigned int count, dw;
+       bool first = true;
        int err;
 
        /* Create a few different contexts (with different mm) and write
@@ -344,9 +345,16 @@ static int igt_ctx_exec(void *arg)
        while (!time_after(jiffies, end_time)) {
                struct intel_engine_cs *engine;
                struct i915_gem_context *ctx;
+               struct drm_i915_file_private *fpriv;
                unsigned int id;
 
-               ctx = i915_gem_create_context(i915, file->driver_priv);
+               fpriv = file->driver_priv;
+               if (first) {
+                       fpriv = NULL;
+                       first = false;
+               }
+
+               ctx = i915_gem_create_context(i915, fpriv);
                if (IS_ERR(ctx)) {
                        err = PTR_ERR(ctx);
                        goto out_unlock;
@@ -392,11 +400,24 @@ static int igt_ctx_exec(void *arg)
        return err;
 }
 
-int i915_gem_context_live_selftests(struct drm_i915_private *i915)
+int i915_gem_context_live_selftests(struct drm_i915_private *dev_priv)
 {
        static const struct i915_subtest tests[] = {
                SUBTEST(igt_ctx_exec),
        };
+       int err;
 
-       return i915_subtests(tests, i915);
+       /* Install a fake aliasing gtt for exercise */
+       if (USES_FULL_PPGTT(dev_priv)) {
+               err = i915_gem_init_aliasing_ppgtt(dev_priv);
+               if (err)
+                       return err;
+       }
+
+       err = i915_subtests(tests, dev_priv);
+
+       if (USES_FULL_PPGTT(dev_priv))
+               i915_ppgtt_put(fetch_and_zero(&dev_priv->mm.aliasing_ppgtt));
+
+       return err;
 }
-- 
2.11.0

_______________________________________________
Intel-gfx mailing list
[email protected]
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to