From: oscar.mateo@intel.com
To: intel-gfx@lists.freedesktop.org
Cc: Ben Widawsky <ben@bwidawsk.net>
Subject: [PATCH] prime_self_import: Assure no pending requests before object counting
Date: Fri, 1 Nov 2013 12:53:42 +0000 [thread overview]
Message-ID: <1383310422-30702-1-git-send-email-oscar.mateo@intel.com> (raw)
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>
---
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
next reply other threads:[~2013-11-01 12:58 UTC|newest]
Thread overview: 14+ messages / expand[flat|nested] mbox.gz Atom feed top
2013-11-01 12:53 oscar.mateo [this message]
2013-11-01 16:08 ` [PATCH] prime_self_import: Assure no pending requests before object counting Daniel Vetter
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=1383310422-30702-1-git-send-email-oscar.mateo@intel.com \
--to=oscar.mateo@intel.com \
--cc=ben@bwidawsk.net \
--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 a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox