[igt-dev] [PATCH i-g-t] igt/gem_fence_thrash, gem_mmap_gtt: Don't let the device sleep

Mika Kuoppala mika.kuoppala at linux.intel.com
Thu May 23 10:08:43 UTC 2019


Chris Wilson <chris at chris-wilson.co.uk> writes:

> These tests are not intended to exercise runtime pm, but the device
> going to sleep in the middle of these tests can significantly slow them
> down as the GTT mmapping is torn down and must be rebuilt. This can be a
> major nuisance if the device autosuspends many times a second.
>
> These tests differ from typical applications as they are not doing any
> rendering or utilizing the display which would ordinarily keep the
> device awake.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> ---
>  tests/i915/gem_fence_thrash.c | 17 +++++++++++++++++
>  tests/i915/gem_mmap_gtt.c     | 15 ++++++++++++++-
>  2 files changed, 31 insertions(+), 1 deletion(-)
>
> diff --git a/tests/i915/gem_fence_thrash.c b/tests/i915/gem_fence_thrash.c
> index 2d7fb2ff8..770e9cb98 100644
> --- a/tests/i915/gem_fence_thrash.c
> +++ b/tests/i915/gem_fence_thrash.c
> @@ -232,10 +232,27 @@ static int run_test(int threads_per_fence, void *f, int tiling,
>  	return 0;
>  }
>  
> +static int wakeref_open(int device)
> +{
> +	int dir, fd;
> +
> +	dir = igt_debugfs_dir(device);
> +	fd = openat(dir, "i915_wakeref_user", O_RDONLY);

I was seeking the corresponding debugfs entry. However
it seems forcewake user takes the pm ref and you want to piggyback on
that.

also igt_assert(fd != -1) ?
-Mika

> +	close(dir);
> +
> +	return fd;
> +}
> +
>  igt_main
>  {
>  	igt_skip_on_simulation();
>  
> +	igt_fixture {
> +		int fd = drm_open_driver(DRIVER_INTEL);
> +		wakeref_open(fd);
> +		close(fd);
> +	}
> +
>  	igt_subtest("bo-write-verify-none")
>  		igt_assert(run_test(0, bo_write_verify, I915_TILING_NONE, 80) == 0);
>  
> diff --git a/tests/i915/gem_mmap_gtt.c b/tests/i915/gem_mmap_gtt.c
> index 9a670f030..4b709f81e 100644
> --- a/tests/i915/gem_mmap_gtt.c
> +++ b/tests/i915/gem_mmap_gtt.c
> @@ -873,6 +873,17 @@ static int mmap_ioctl(int i915, struct drm_i915_gem_mmap_gtt *arg)
>  	return err;
>  }
>  
> +static int wakeref_open(int device)
> +{
> +	int dir, fd;
> +
> +	dir = igt_debugfs_dir(device);
> +	fd = openat(dir, "i915_wakeref_user", O_RDONLY);
> +	close(dir);
> +
> +	return fd;
> +}
> +
>  int fd;
>  
>  igt_main
> @@ -880,8 +891,10 @@ igt_main
>  	if (igt_run_in_simulation())
>  		OBJECT_SIZE = 1 * 1024 * 1024;
>  
> -	igt_fixture
> +	igt_fixture {
>  		fd = drm_open_driver(DRIVER_INTEL);
> +		wakeref_open(fd);
> +	}
>  
>  	igt_subtest("bad-object") {
>  		uint32_t real_handle = gem_create(fd, 4096);
> -- 
> 2.20.1


More information about the igt-dev mailing list