All of lore.kernel.org
 help / color / mirror / Atom feed
From: Daniel Vetter <daniel@ffwll.ch>
To: oscar.mateo@intel.com
Cc: intel-gfx@lists.freedesktop.org, Ben Widawsky <ben@bwidawsk.net>
Subject: Re: [PATCH] prime_self_import: Assure no pending requests before object counting
Date: Fri, 1 Nov 2013 17:08:17 +0100	[thread overview]
Message-ID: <20131101160817.GM4167@phenom.ffwll.local> (raw)
In-Reply-To: <1383310422-30702-1-git-send-email-oscar.mateo@intel.com>

On Fri, Nov 01, 2013 at 12:53:42PM +0000, oscar.mateo@intel.com wrote:
> From: Oscar Mateo <oscar.mateo@intel.com>
> 
> We don't want a previously used object to be freed in the middle of a
> before/after object counting operation (or we would get a "-1 objects
> leaked" message). We have seen this happening, e.g., when a context
> from a previous run dies, but its backing object is alive waiting for
> a retire_work to kick in.
> 
> Signed-off-by: Oscar Mateo <oscar.mateo@intel.com>
> Cc: Ben Widawsky <ben@bwidawsk.net>

Nice catch. Should we do this in general as part of our gem_quiescent_gpu
helper? All i-g-t testcase are written under the assumption that they
completel own the gpu and that the gtt is completely empty besides the few
driver-allocated and pinned objects. So trying really hard to get rid of
any residual stuff sounds like a good idea.

Then we could just add a call to gem_quiescent_gpu to the get_object_count
function.

Care to rework the patch a bit and make sure it all still works?

Thanks, Daniel

> ---
>  tests/prime_self_import.c |   29 +++++++++++++++++++++++++++--
>  1 file changed, 27 insertions(+), 2 deletions(-)
> 
> diff --git a/tests/prime_self_import.c b/tests/prime_self_import.c
> index 481a809..e48abd1 100644
> --- a/tests/prime_self_import.c
> +++ b/tests/prime_self_import.c
> @@ -211,6 +211,25 @@ static void test_with_one_bo(void)
>  	check_bo(fd2, handle_import1, fd2, handle_import1);
>  }
>  
> +static void retire_requests(void)
> +{
> +	char fname[FILENAME_MAX];
> +	int drop_caches_fd;
> +	const char *data = "0x4";
> +
> +	snprintf(fname, FILENAME_MAX, "%s/%i/%s",
> +		 "/sys/kernel/debug/dri", drm_get_card(),
> +		 "i915_gem_drop_caches");
> +
> +	drop_caches_fd = open(fname, O_WRONLY);
> +
> +	if (drop_caches_fd >= 0)
> +	{
> +		write(drop_caches_fd, data, strlen(data) + 1);
> +		close(drop_caches_fd);
> +	}
> +}
> +
>  static int get_object_count(void)
>  {
>  	FILE *file;
> @@ -252,10 +271,13 @@ static void test_reimport_close_race(void)
>  	pthread_t *threads;
>  	int r, i, num_threads;
>  	int fds[2];
> -	int obj_count = get_object_count();
> +	int obj_count;
>  	void *status;
>  	uint32_t handle;
>  
> +	retire_requests();
> +	obj_count = get_object_count();
> +
>  	num_threads = sysconf(_SC_NPROCESSORS_ONLN);
>  
>  	threads = calloc(num_threads, sizeof(pthread_t));
> @@ -330,9 +352,12 @@ static void test_export_close_race(void)
>  	pthread_t *threads;
>  	int r, i, num_threads;
>  	int fd;
> -	int obj_count = get_object_count();
> +	int obj_count;
>  	void *status;
>  
> +	retire_requests();
> +	obj_count = get_object_count();
> +
>  	num_threads = sysconf(_SC_NPROCESSORS_ONLN);
>  
>  	threads = calloc(num_threads, sizeof(pthread_t));
> -- 
> 1.7.9.5
> 
> _______________________________________________
> Intel-gfx mailing list
> Intel-gfx@lists.freedesktop.org
> http://lists.freedesktop.org/mailman/listinfo/intel-gfx

-- 
Daniel Vetter
Software Engineer, Intel Corporation
+41 (0) 79 365 57 48 - http://blog.ffwll.ch

  reply	other threads:[~2013-11-01 16:07 UTC|newest]

Thread overview: 14+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2013-11-01 12:53 [PATCH] prime_self_import: Assure no pending requests before object counting oscar.mateo
2013-11-01 16:08 ` Daniel Vetter [this message]
2013-11-01 16:18   ` Ben Widawsky
2013-11-01 18:42     ` Daniel Vetter
2013-11-01 18:44       ` Ben Widawsky
2013-11-01 18:47         ` Daniel Vetter
2013-11-01 18:52           ` Ben Widawsky
2013-11-01 19:07             ` Daniel Vetter
2013-11-04 16:45               ` Mateo Lozano, Oscar
2013-11-04 17:13                 ` Daniel Vetter
2013-11-04 17:26                   ` Mateo Lozano, Oscar
2013-11-04 17:43                     ` Daniel Vetter
2013-11-01 16:16 ` Ben Widawsky
2013-11-01 16:22 ` Damien Lespiau

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=20131101160817.GM4167@phenom.ffwll.local \
    --to=daniel@ffwll.ch \
    --cc=ben@bwidawsk.net \
    --cc=intel-gfx@lists.freedesktop.org \
    --cc=oscar.mateo@intel.com \
    /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.