As drm now exports a method to create an anonymous struct file around a
drm_device for internal use, make use of it to avoid our horrible hacks.

Signed-off-by: Chris Wilson <ch...@chris-wilson.co.uk>
---
 drivers/gpu/drm/i915/Kconfig.debug            |  2 +
 .../gpu/drm/i915/gem/selftests/huge_pages.c   |  2 +-
 .../drm/i915/gem/selftests/i915_gem_context.c | 12 ++---
 .../i915/gem/selftests/i915_gem_object_blt.c  |  4 +-
 drivers/gpu/drm/i915/gt/selftest_context.c    |  4 +-
 drivers/gpu/drm/i915/gt/selftest_hangcheck.c  |  8 +--
 .../gpu/drm/i915/gt/selftest_workarounds.c    |  2 +-
 drivers/gpu/drm/i915/selftests/i915_gem.c     |  4 +-
 .../gpu/drm/i915/selftests/i915_gem_evict.c   |  2 +-
 drivers/gpu/drm/i915/selftests/i915_gem_gtt.c |  4 +-
 drivers/gpu/drm/i915/selftests/i915_request.c |  2 +-
 .../drm/i915/selftests/intel_memory_region.c  |  2 +-
 drivers/gpu/drm/i915/selftests/mock_drm.c     | 49 +++----------------
 drivers/gpu/drm/i915/selftests/mock_drm.h     |  8 ++-
 14 files changed, 39 insertions(+), 66 deletions(-)

diff --git a/drivers/gpu/drm/i915/Kconfig.debug 
b/drivers/gpu/drm/i915/Kconfig.debug
index ef123eb29168..1140525da75a 100644
--- a/drivers/gpu/drm/i915/Kconfig.debug
+++ b/drivers/gpu/drm/i915/Kconfig.debug
@@ -37,6 +37,7 @@ config DRM_I915_DEBUG
        select X86_MSR # used by igt/pm_rpm
        select DRM_VGEM # used by igt/prime_vgem (dmabuf interop checks)
        select DRM_DEBUG_MM if DRM=y
+       select DRM_EXPORT_FOR_TESTS if m
        select DRM_DEBUG_SELFTEST
        select DMABUF_SELFTESTS
        select SW_SYNC # signaling validation framework (igt/syncobj*)
@@ -160,6 +161,7 @@ config DRM_I915_SELFTEST
        bool "Enable selftests upon driver load"
        depends on DRM_I915
        default n
+       select DRM_EXPORT_FOR_TESTS if m
        select FAULT_INJECTION
        select PRIME_NUMBERS
        help
diff --git a/drivers/gpu/drm/i915/gem/selftests/huge_pages.c 
b/drivers/gpu/drm/i915/gem/selftests/huge_pages.c
index 688c49a24f32..06dad7b0db82 100644
--- a/drivers/gpu/drm/i915/gem/selftests/huge_pages.c
+++ b/drivers/gpu/drm/i915/gem/selftests/huge_pages.c
@@ -1944,6 +1944,6 @@ int i915_gem_huge_page_live_selftests(struct 
drm_i915_private *i915)
        err = i915_subtests(tests, ctx);
 
 out_file:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c 
b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
index 62fabc023a83..47890c92534c 100644
--- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
+++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_context.c
@@ -149,7 +149,7 @@ static int live_nop_switch(void *arg)
        }
 
 out_file:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -377,7 +377,7 @@ static int live_parallel_switch(void *arg)
        }
        kfree(data);
 out_file:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -716,7 +716,7 @@ static int igt_ctx_exec(void *arg)
                if (igt_live_test_end(&t))
                        err = -EIO;
 
-               mock_file_free(i915, file);
+               mock_file_put(file);
                if (err)
                        return err;
 
@@ -854,7 +854,7 @@ static int igt_shared_ctx_exec(void *arg)
        if (igt_live_test_end(&t))
                err = -EIO;
 out_file:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -1426,7 +1426,7 @@ static int igt_ctx_readonly(void *arg)
        if (igt_live_test_end(&t))
                err = -EIO;
 
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -1750,7 +1750,7 @@ static int igt_vm_isolation(void *arg)
 out_file:
        if (igt_live_test_end(&t))
                err = -EIO;
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
diff --git a/drivers/gpu/drm/i915/gem/selftests/i915_gem_object_blt.c 
b/drivers/gpu/drm/i915/gem/selftests/i915_gem_object_blt.c
index e8132aca0bb6..d9fdfddb7091 100644
--- a/drivers/gpu/drm/i915/gem/selftests/i915_gem_object_blt.c
+++ b/drivers/gpu/drm/i915/gem/selftests/i915_gem_object_blt.c
@@ -301,7 +301,7 @@ static int igt_fill_blt_thread(void *arg)
 
        intel_context_put(ce);
 out_file:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -432,7 +432,7 @@ static int igt_copy_blt_thread(void *arg)
 
        intel_context_put(ce);
 out_file:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
diff --git a/drivers/gpu/drm/i915/gt/selftest_context.c 
b/drivers/gpu/drm/i915/gt/selftest_context.c
index bc720defc6b8..a5688f7d9073 100644
--- a/drivers/gpu/drm/i915/gt/selftest_context.c
+++ b/drivers/gpu/drm/i915/gt/selftest_context.c
@@ -313,7 +313,7 @@ static int live_active_context(void *arg)
        }
 
 out_file:
-       mock_file_free(gt->i915, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -423,7 +423,7 @@ static int live_remote_context(void *arg)
        }
 
 out_file:
-       mock_file_free(gt->i915, file);
+       mock_file_put(file);
        return err;
 }
 
diff --git a/drivers/gpu/drm/i915/gt/selftest_hangcheck.c 
b/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
index 85e9ccf5c304..cdaaee4432b2 100644
--- a/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
+++ b/drivers/gpu/drm/i915/gt/selftest_hangcheck.c
@@ -439,7 +439,7 @@ static int igt_reset_nop(void *arg)
 
        err = igt_flush_test(gt->i915);
 out:
-       mock_file_free(gt->i915, file);
+       mock_file_put(file);
        if (intel_gt_is_wedged(gt))
                err = -EIO;
        return err;
@@ -535,7 +535,7 @@ static int igt_reset_nop_engine(void *arg)
 
        err = igt_flush_test(gt->i915);
 out:
-       mock_file_free(gt->i915, file);
+       mock_file_put(file);
        if (intel_gt_is_wedged(gt))
                err = -EIO;
        return err;
@@ -752,7 +752,7 @@ static int active_engine(void *data)
        }
 
 err_file:
-       mock_file_free(engine->i915, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -1325,7 +1325,7 @@ static int igt_reset_evict_ppgtt(void *arg)
        i915_vm_put(vm);
 
 out:
-       mock_file_free(gt->i915, file);
+       mock_file_put(file);
        return err;
 }
 
diff --git a/drivers/gpu/drm/i915/gt/selftest_workarounds.c 
b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
index abce6e4ec9c0..5c69ec5c5ef9 100644
--- a/drivers/gpu/drm/i915/gt/selftest_workarounds.c
+++ b/drivers/gpu/drm/i915/gt/selftest_workarounds.c
@@ -739,7 +739,7 @@ static int live_dirty_whitelist(void *arg)
        }
 
 out_file:
-       mock_file_free(gt->i915, file);
+       mock_file_put(file);
        return err;
 }
 
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem.c 
b/drivers/gpu/drm/i915/selftests/i915_gem.c
index d83f6bf6d9d4..aa6282adfd09 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem.c
@@ -163,7 +163,7 @@ static int igt_gem_suspend(void *arg)
 
        err = switch_to_context(ctx);
 out:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -198,7 +198,7 @@ static int igt_gem_hibernate(void *arg)
 
        err = switch_to_context(ctx);
 out:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c 
b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
index 42e948144f1b..41092dcea5b1 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_evict.c
@@ -515,7 +515,7 @@ static int igt_evict_contexts(void *arg)
                pr_info("Submitted %lu contexts/requests on %s\n",
                        count, engine->name);
 
-               mock_file_free(i915, file);
+               mock_file_put(file);
                if (err)
                        break;
        }
diff --git a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c 
b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
index 3f7e80fb3bbd..c3e0d63c4d0c 100644
--- a/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
+++ b/drivers/gpu/drm/i915/selftests/i915_gem_gtt.c
@@ -1026,7 +1026,7 @@ static int exercise_ppgtt(struct drm_i915_private 
*dev_priv,
        i915_vm_put(&ppgtt->vm);
 
 out_free:
-       mock_file_free(dev_priv, file);
+       mock_file_put(file);
        return err;
 }
 
@@ -2022,7 +2022,7 @@ static int igt_cs_tlb(void *arg)
 out_vm:
        i915_vm_put(vm);
 out_unlock:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
diff --git a/drivers/gpu/drm/i915/selftests/i915_request.c 
b/drivers/gpu/drm/i915/selftests/i915_request.c
index 9e6d3159cd80..7c56ee38cc5b 100644
--- a/drivers/gpu/drm/i915/selftests/i915_request.c
+++ b/drivers/gpu/drm/i915/selftests/i915_request.c
@@ -1430,7 +1430,7 @@ static int live_breadcrumbs_smoketest(void *arg)
 out_smoke:
        kfree(smoke);
 out_file:
-       mock_file_free(i915, file);
+       mock_file_put(file);
 out_rpm:
        intel_runtime_pm_put(&i915->runtime_pm, wakeref);
 
diff --git a/drivers/gpu/drm/i915/selftests/intel_memory_region.c 
b/drivers/gpu/drm/i915/selftests/intel_memory_region.c
index 19e1cca8f143..fa283ce4532a 100644
--- a/drivers/gpu/drm/i915/selftests/intel_memory_region.c
+++ b/drivers/gpu/drm/i915/selftests/intel_memory_region.c
@@ -439,7 +439,7 @@ static int igt_lmem_write_gpu(void *arg)
 out_put:
        i915_gem_object_put(obj);
 out_file:
-       mock_file_free(i915, file);
+       mock_file_put(file);
        return err;
 }
 
diff --git a/drivers/gpu/drm/i915/selftests/mock_drm.c 
b/drivers/gpu/drm/i915/selftests/mock_drm.c
index 09c704153456..c100c3efe239 100644
--- a/drivers/gpu/drm/i915/selftests/mock_drm.c
+++ b/drivers/gpu/drm/i915/selftests/mock_drm.c
@@ -22,52 +22,17 @@
  *
  */
 
+#include <drm/drm_file.h>
+
 #include "mock_drm.h"
 
 struct drm_file *mock_file(struct drm_i915_private *i915)
 {
-       struct file *filp;
-       struct inode *inode;
-       struct drm_file *file;
-       int err;
-
-       inode = kzalloc(sizeof(*inode), GFP_KERNEL);
-       if (!inode) {
-               err = -ENOMEM;
-               goto err;
-       }
-
-       inode->i_rdev = i915->drm.primary->index;
-
-       filp = kzalloc(sizeof(*filp), GFP_KERNEL);
-       if (!filp) {
-               err = -ENOMEM;
-               goto err_inode;
-       }
-
-       err = drm_open(inode, filp);
-       if (err)
-               goto err_filp;
+       struct file *file;
 
-       file = filp->private_data;
-       memset(&file->filp, POISON_INUSE, sizeof(file->filp));
-       file->authenticated = true;
-
-       kfree(filp);
-       kfree(inode);
-       return file;
-
-err_filp:
-       kfree(filp);
-err_inode:
-       kfree(inode);
-err:
-       return ERR_PTR(err);
-}
-
-void mock_file_free(struct drm_i915_private *i915, struct drm_file *file)
-{
-       struct file filp = { .private_data = file };
+       file = mock_drm_getfile(i915->drm.primary, O_RDWR);
+       if (IS_ERR(file))
+               return ERR_CAST(file);
 
-       drm_release(NULL, &filp);
+       return file->private_data;
 }
diff --git a/drivers/gpu/drm/i915/selftests/mock_drm.h 
b/drivers/gpu/drm/i915/selftests/mock_drm.h
index b39beee9f8f6..dc4190bd3f5a 100644
--- a/drivers/gpu/drm/i915/selftests/mock_drm.h
+++ b/drivers/gpu/drm/i915/selftests/mock_drm.h
@@ -25,7 +25,13 @@
 #ifndef __MOCK_DRM_H
 #define __MOCK_DRM_H
 
+struct drm_file;
+struct drm_i915_private;
+
 struct drm_file *mock_file(struct drm_i915_private *i915);
-void mock_file_free(struct drm_i915_private *i915, struct drm_file *file);
+static inline void mock_file_put(struct drm_file *file)
+{
+       fput(file->filp);
+}
 
 #endif /* !__MOCK_DRM_H */
-- 
2.24.0

_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

Reply via email to