[Intel-gfx] [PATCH] prime_self_import: Assure no pending requests before object counting
oscar.mateo at intel.com
oscar.mateo at intel.com
Fri Nov 1 13:53:42 CET 2013
From: Oscar Mateo <oscar.mateo at 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 at intel.com>
Cc: Ben Widawsky <ben at 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
More information about the Intel-gfx
mailing list