All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v3 3/5] drm/i915/selftests: Replace mock_file hackery with drm's true fake
Date: Thu, 7 Nov 2019 09:39:24 +0100	[thread overview]
Message-ID: <20191107083924.GN23790@phenom.ffwll.local> (raw)
In-Reply-To: <20191106142432.14022-4-chris@chris-wilson.co.uk>

On Wed, Nov 06, 2019 at 02:24:30PM +0000, Chris Wilson wrote:
> 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 <chris@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;

Hm looking at this patch seems like the function interface for the core
mock helper is wrong, and we want a drm_file there. Then you could also
simplify this wrapper a notch more.

>  }
> 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)

I still think this would be nice next to the core mock_drm_open helper, as
maybe mock_drm_close. Suitable bikeshedding on the names included :-)
-Daniel

> +{
> +	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

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
dri-devel mailing list
dri-devel@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/dri-devel

WARNING: multiple messages have this Message-ID (diff)
From: Daniel Vetter <daniel@ffwll.ch>
To: Chris Wilson <chris@chris-wilson.co.uk>
Cc: intel-gfx@lists.freedesktop.org, dri-devel@lists.freedesktop.org
Subject: Re: [Intel-gfx] [PATCH v3 3/5] drm/i915/selftests: Replace mock_file hackery with drm's true fake
Date: Thu, 7 Nov 2019 09:39:24 +0100	[thread overview]
Message-ID: <20191107083924.GN23790@phenom.ffwll.local> (raw)
Message-ID: <20191107083924.HHcfXdBw8ewtrw6GfA5KTbM8lI3h-nlcPEcivQyqvOk@z> (raw)
In-Reply-To: <20191106142432.14022-4-chris@chris-wilson.co.uk>

On Wed, Nov 06, 2019 at 02:24:30PM +0000, Chris Wilson wrote:
> 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 <chris@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;

Hm looking at this patch seems like the function interface for the core
mock helper is wrong, and we want a drm_file there. Then you could also
simplify this wrapper a notch more.

>  }
> 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)

I still think this would be nice next to the core mock_drm_open helper, as
maybe mock_drm_close. Suitable bikeshedding on the names included :-)
-Daniel

> +{
> +	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

-- 
Daniel Vetter
Software Engineer, Intel Corporation
http://blog.ffwll.ch
_______________________________________________
Intel-gfx mailing list
Intel-gfx@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/intel-gfx

  reply	other threads:[~2019-11-07  8:39 UTC|newest]

Thread overview: 34+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-11-06 14:24 mock_drm_getfile(), take three Chris Wilson
2019-11-06 14:24 ` [Intel-gfx] " Chris Wilson
2019-11-06 14:24 ` [PATCH v3 1/5] drm: Move EXPORT_SYMBOL_FOR_TESTS_ONLY under a separate Kconfig Chris Wilson
2019-11-06 14:24   ` [Intel-gfx] " Chris Wilson
2019-11-06 14:24   ` Chris Wilson
2019-11-07  8:35   ` Daniel Vetter
2019-11-07  8:35     ` [Intel-gfx] " Daniel Vetter
2019-11-06 14:24 ` [PATCH v3 2/5] drm: Expose a method for creating anonymous struct file around drm_minor Chris Wilson
2019-11-06 14:24   ` [Intel-gfx] " Chris Wilson
2019-11-06 14:24   ` Chris Wilson
2019-11-07  8:36   ` Daniel Vetter
2019-11-07  8:36     ` [Intel-gfx] " Daniel Vetter
2019-11-06 14:24 ` [PATCH v3 3/5] drm/i915/selftests: Replace mock_file hackery with drm's true fake Chris Wilson
2019-11-06 14:24   ` [Intel-gfx] " Chris Wilson
2019-11-06 14:24   ` Chris Wilson
2019-11-07  8:39   ` Daniel Vetter [this message]
2019-11-07  8:39     ` [Intel-gfx] " Daniel Vetter
2019-11-07 17:17     ` Chris Wilson
2019-11-07 17:17       ` Chris Wilson
2019-11-07 17:33       ` Daniel Vetter
2019-11-07 17:33         ` [Intel-gfx] " Daniel Vetter
2019-11-07 17:33         ` Daniel Vetter
2019-11-07 17:28   ` Matthew Auld
2019-11-07 17:28     ` [Intel-gfx] " Matthew Auld
2019-11-07 17:28     ` Matthew Auld
2019-11-06 14:24 ` [PATCH v3 4/5] drm/i915/selftests: Wrap vm_mmap() around GEM objects Chris Wilson
2019-11-06 14:24   ` [Intel-gfx] " Chris Wilson
2019-11-06 14:24   ` Chris Wilson
2019-11-06 14:24 ` [PATCH v3 5/5] drm/i915/selftests: Verify mmap_gtt revocation on unbinding Chris Wilson
2019-11-06 14:24   ` [Intel-gfx] " Chris Wilson
2019-11-06 18:35 ` ✗ Fi.CI.CHECKPATCH: warning for series starting with [v3,1/5] drm: Move EXPORT_SYMBOL_FOR_TESTS_ONLY under a separate Kconfig Patchwork
2019-11-06 18:35   ` [Intel-gfx] " Patchwork
2019-11-06 18:57 ` ✗ Fi.CI.BAT: failure " Patchwork
2019-11-06 18:57   ` [Intel-gfx] " Patchwork

Reply instructions:

You may reply publicly to this message via plain-text email
using any one of the following methods:

* Save the following mbox file, import it into your mail client,
  and reply-to-all from there: mbox

  Avoid top-posting and favor interleaved quoting:
  https://en.wikipedia.org/wiki/Posting_style#Interleaved_style

* Reply using the --to, --cc, and --in-reply-to
  switches of git-send-email(1):

  git send-email \
    --in-reply-to=20191107083924.GN23790@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=chris@chris-wilson.co.uk \
    --cc=dri-devel@lists.freedesktop.org \
    --cc=intel-gfx@lists.freedesktop.org \
    /path/to/YOUR_REPLY

  https://kernel.org/pub/software/scm/git/docs/git-send-email.html

* If your mail client supports setting the In-Reply-To header
  via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.