All of lore.kernel.org
 help / color / mirror / Atom feed
* [igt-dev] [PATCH i-g-t] lib: Move __gem_context_create to common ioctl wrapper library.
@ 2018-02-02 18:25 Antonio Argenziano
  2018-02-02 18:29 ` Antonio Argenziano
                   ` (3 more replies)
  0 siblings, 4 replies; 5+ messages in thread
From: Antonio Argenziano @ 2018-02-02 18:25 UTC (permalink / raw)
  To: igt-dev

This patch adds a context creation ioctl wrapper that returns the error
for the caller to consume. Multiple tests that implemented this already,
have been changed to use the new library function.

v2:
	- Add gem_require_contexts() to check for contexts support (Chris)

v3:
	- Add gem_has_contexts to check for contexts support and change
	  gem_require_contexts to skip if contests support is not available.
	  (Chris)

v4:
	- Cosmetic changes and use lib function in gem_ctx_create where
	  possible. (Michal)

Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>

Cc: Chris Wilson <chris@chris-wilson.co.uk>
Cc: Michał Winiarski <michal.winiarski@intel.com>

Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>
---
 benchmarks/gem_exec_ctx.c   |  6 ++---
 benchmarks/gem_exec_trace.c |  4 +--
 lib/i915/gem_context.c      | 61 +++++++++++++++++++++++++++++++++++++--------
 lib/i915/gem_context.h      |  5 ++++
 tests/gem_ctx_create.c      | 13 +++++-----
 tests/gem_ctx_switch.c      | 13 ----------
 tests/gem_eio.c             | 13 +---------
 tests/gem_exec_await.c      | 14 ++---------
 tests/gem_exec_nop.c        | 13 ----------
 tests/gem_exec_parallel.c   | 15 +++--------
 tests/gem_exec_reuse.c      | 13 ----------
 tests/gem_exec_whisper.c    | 13 ----------
 12 files changed, 74 insertions(+), 109 deletions(-)

diff --git a/benchmarks/gem_exec_ctx.c b/benchmarks/gem_exec_ctx.c
index 0eac04b0..a1c6e5d7 100644
--- a/benchmarks/gem_exec_ctx.c
+++ b/benchmarks/gem_exec_ctx.c
@@ -64,7 +64,7 @@ static uint32_t batch(int fd)
 	return handle;
 }
 
-static uint32_t __gem_context_create(int fd)
+static uint32_t __gem_context_create_local(int fd)
 {
 	struct drm_i915_gem_context_create create;
 
@@ -101,7 +101,7 @@ static int loop(unsigned ring,
 	execbuf.flags |= LOCAL_I915_EXEC_HANDLE_LUT;
 	execbuf.flags |= LOCAL_I915_EXEC_NO_RELOC;
 	if (mode != DEFAULT) {
-		execbuf.rsvd1 = __gem_context_create(fd);
+		execbuf.rsvd1 = __gem_context_create_local(fd);
 		if (execbuf.rsvd1 == 0)
 			return 77;
 	}
@@ -125,7 +125,7 @@ static int loop(unsigned ring,
 			uint32_t ctx = 0;
 
 			if (mode != DEFAULT && mode != NOP) {
-				execbuf.rsvd1 = __gem_context_create(fd);
+				execbuf.rsvd1 = __gem_context_create_local(fd);
 				ctx = gem_context_create(fd);
 			}
 
diff --git a/benchmarks/gem_exec_trace.c b/benchmarks/gem_exec_trace.c
index 12577649..2724ee92 100644
--- a/benchmarks/gem_exec_trace.c
+++ b/benchmarks/gem_exec_trace.c
@@ -105,7 +105,7 @@ static double elapsed(const struct timespec *start, const struct timespec *end)
 	return 1e3*(end->tv_sec - start->tv_sec) + 1e-6*(end->tv_nsec - start->tv_nsec);
 }
 
-static uint32_t __gem_context_create(int fd)
+static uint32_t __gem_context_create_local(int fd)
 {
 	struct drm_i915_gem_context_create arg = {};
 	drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg);
@@ -216,7 +216,7 @@ static double replay(const char *filename, long nop, long range)
 				num_ctx = new_ctx;
 			}
 
-			ctx[t->handle] = __gem_context_create(fd);
+			ctx[t->handle] = __gem_context_create_local(fd);
 			break;
 		}
 	case DEL_CTX:
diff --git a/lib/i915/gem_context.c b/lib/i915/gem_context.c
index 8f383a97..ad2032e1 100644
--- a/lib/i915/gem_context.c
+++ b/lib/i915/gem_context.c
@@ -43,6 +43,52 @@
  * software features improving submission model (context priority).
  */
 
+/**
+ * gem_has_contexts:
+ * @fd: open i915 drm file descriptor
+ *
+ * Queries whether context creation is supported or not.
+ *
+ * Returns: Context creation availability.
+ */
+bool gem_has_contexts(int fd)
+{
+	uint32_t ctx_id = 0;
+
+	__gem_context_create(fd, &ctx_id);
+	if (ctx_id)
+		gem_context_destroy(fd, ctx_id);
+
+	return ctx_id;
+}
+
+/**
+ * gem_require_contexts:
+ * @fd: open i915 drm file descriptor
+ *
+ * This helper will automatically skip the test on platforms where context
+ * support is not available.
+ */
+void gem_require_contexts(int fd)
+{
+	igt_require(gem_has_contexts(fd));
+}
+
+int __gem_context_create(int fd, uint32_t *ctx_id)
+{
+       struct drm_i915_gem_context_create create;
+       int err = 0;
+
+       memset(&create, 0, sizeof(create));
+       if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create) == 0)
+               *ctx_id = create.ctx_id;
+       else
+               err = -errno;
+
+       errno = 0;
+       return err;
+}
+
 /**
  * gem_context_create:
  * @fd: open i915 drm file descriptor
@@ -55,18 +101,13 @@
  */
 uint32_t gem_context_create(int fd)
 {
-	struct drm_i915_gem_context_create create;
+	uint32_t ctx_id;
+	gem_require_contexts(fd);
 
-	memset(&create, 0, sizeof(create));
-	if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create)) {
-		int err = -errno;
-		igt_skip_on(err == -ENODEV || errno == -EINVAL);
-		igt_assert_eq(err, 0);
-	}
-	igt_assert(create.ctx_id != 0);
-	errno = 0;
+	igt_assert_eq(__gem_context_create(fd, &ctx_id), 0);
+	igt_assert(ctx_id != 0);
 
-	return create.ctx_id;
+	return ctx_id;
 }
 
 int __gem_context_destroy(int fd, uint32_t ctx_id)
diff --git a/lib/i915/gem_context.h b/lib/i915/gem_context.h
index 96106b71..aef68dda 100644
--- a/lib/i915/gem_context.h
+++ b/lib/i915/gem_context.h
@@ -25,10 +25,15 @@
 #define GEM_CONTEXT_H
 
 uint32_t gem_context_create(int fd);
+int __gem_context_create(int fd, uint32_t *ctx_id);
 void gem_context_destroy(int fd, uint32_t ctx_id);
 int __gem_context_destroy(int fd, uint32_t ctx_id);
+
+bool gem_has_contexts(int fd);
+void gem_require_contexts(int fd);
 void gem_context_require_bannable(int fd);
 void gem_context_require_param(int fd, uint64_t param);
+
 void gem_context_get_param(int fd, struct drm_i915_gem_context_param *p);
 void gem_context_set_param(int fd, struct drm_i915_gem_context_param *p);
 int __gem_context_set_param(int fd, struct drm_i915_gem_context_param *p);
diff --git a/tests/gem_ctx_create.c b/tests/gem_ctx_create.c
index ae0825a1..6a3a5fe8 100644
--- a/tests/gem_ctx_create.c
+++ b/tests/gem_ctx_create.c
@@ -45,7 +45,7 @@ static unsigned all_nengine;
 static unsigned ppgtt_engines[16];
 static unsigned ppgtt_nengine;
 
-static int __gem_context_create(int fd, struct drm_i915_gem_context_create *arg)
+static int __gem_context_create_local(int fd, struct drm_i915_gem_context_create *arg)
 {
 	int ret = 0;
 	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, arg))
@@ -241,6 +241,7 @@ static void maximum(int fd, int ncpus, unsigned mode)
 	unsigned ctx_size = context_size(fd);
 	uint32_t *contexts = NULL;
 	unsigned long count = 0;
+	uint32_t ctx_id;
 
 	memset(&create, 0, sizeof(create));
 	do {
@@ -255,14 +256,14 @@ static void maximum(int fd, int ncpus, unsigned mode)
 
 		err = -ENOMEM;
 		if (avail_mem > (count + 1) * ctx_size)
-			err = __gem_context_create(fd, &create);
+			err = __gem_context_create(fd, &ctx_id);
 		if (err) {
 			igt_info("Created %lu contexts, before failing with '%s' [%d]\n",
 				 count, strerror(-err), -err);
 			break;
 		}
 
-		contexts[count++] = create.ctx_id;
+		contexts[count++] = ctx_id;
 	} while (1);
 	igt_require(count);
 
@@ -322,7 +323,7 @@ igt_main
 		igt_require_gem(fd);
 
 		memset(&create, 0, sizeof(create));
-		igt_require(__gem_context_create(fd, &create) == 0);
+		igt_require(__gem_context_create_local(fd, &create) == 0);
 		gem_context_destroy(fd, create.ctx_id);
 
 		for_each_engine(fd, engine) {
@@ -347,7 +348,7 @@ igt_main
 		memset(&create, 0, sizeof(create));
 		create.ctx_id = rand();
 		create.pad = 0;
-		igt_assert_eq(__gem_context_create(fd, &create), 0);
+		igt_assert_eq(__gem_context_create_local(fd, &create), 0);
 		igt_assert(create.ctx_id != 0);
 		gem_context_destroy(fd, create.ctx_id);
 	}
@@ -356,7 +357,7 @@ igt_main
 		memset(&create, 0, sizeof(create));
 		create.ctx_id = rand();
 		create.pad = 1;
-		igt_assert_eq(__gem_context_create(fd, &create), -EINVAL);
+		igt_assert_eq(__gem_context_create_local(fd, &create), -EINVAL);
 	}
 
 	igt_subtest("maximum-mem")
diff --git a/tests/gem_ctx_switch.c b/tests/gem_ctx_switch.c
index fdd67202..285fc1a1 100644
--- a/tests/gem_ctx_switch.c
+++ b/tests/gem_ctx_switch.c
@@ -45,19 +45,6 @@
 
 #define INTERRUPTIBLE 1
 
-static int __gem_context_create(int fd, uint32_t *ctx_id)
-{
-	struct drm_i915_gem_context_create arg;
-	int ret = 0;
-
-	memset(&arg, 0, sizeof(arg));
-	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg))
-		ret = -errno;
-
-	*ctx_id = arg.ctx_id;
-	return ret;
-}
-
 static double elapsed(const struct timespec *start, const struct timespec *end)
 {
 	return ((end->tv_sec - start->tv_sec) +
diff --git a/tests/gem_eio.c b/tests/gem_eio.c
index 6d5a10f2..430bfac5 100644
--- a/tests/gem_eio.c
+++ b/tests/gem_eio.c
@@ -273,17 +273,6 @@ static void test_inflight_suspend(int fd)
 	trigger_reset(fd);
 }
 
-static uint32_t __gem_context_create(int fd)
-{
-	struct drm_i915_gem_context_create create;
-
-	memset(&create, 0, sizeof(create));
-	if (ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create))
-		return 0;
-
-	return create.ctx_id;
-}
-
 static void test_inflight_contexts(int fd)
 {
 	struct drm_i915_gem_execbuffer2 execbuf;
@@ -295,7 +284,7 @@ static void test_inflight_contexts(int fd)
 
 	igt_require(gem_has_exec_fence(fd));
 
-	ctx[0] = __gem_context_create(fd);
+	ctx[0] = gem_context_create(fd);
 	igt_require(ctx[0]);
 	for (unsigned int n = 1; n < ARRAY_SIZE(ctx); n++)
 		ctx[n] = gem_context_create(fd);
diff --git a/tests/gem_exec_await.c b/tests/gem_exec_await.c
index 28b280ff..133492a7 100644
--- a/tests/gem_exec_await.c
+++ b/tests/gem_exec_await.c
@@ -55,15 +55,6 @@ static bool ignore_engine(int fd, unsigned engine)
 	return false;
 }
 
-static uint32_t __gem_context_create(int fd)
-{
-	struct drm_i915_gem_context_create arg;
-
-	memset(&arg, 0, sizeof(arg));
-	drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg);
-	return arg.ctx_id;
-}
-
 static void xchg_obj(void *array, unsigned i, unsigned j)
 {
 	struct drm_i915_gem_exec_object2 *obj = array;
@@ -130,8 +121,7 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags)
 					 LOCAL_I915_EXEC_HANDLE_LUT);
 
 		if (flags & CONTEXTS) {
-			exec[e].execbuf.rsvd1 = __gem_context_create(fd);
-			igt_require(exec[e].execbuf.rsvd1);
+			exec[e].execbuf.rsvd1 = gem_context_create(fd);
 		}
 
 		exec[e].exec[0].handle = gem_create(fd, 4096);
@@ -174,7 +164,7 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags)
 
 			if (flags & CONTEXTS) {
 				gem_context_destroy(fd, exec[e].execbuf.rsvd1);
-				exec[e].execbuf.rsvd1 = __gem_context_create(fd);
+				exec[e].execbuf.rsvd1 = gem_context_create(fd);
 			}
 
 			exec[e].reloc.presumed_offset = exec[e].exec[1].offset;
diff --git a/tests/gem_exec_nop.c b/tests/gem_exec_nop.c
index 668dcb94..107195a7 100644
--- a/tests/gem_exec_nop.c
+++ b/tests/gem_exec_nop.c
@@ -357,19 +357,6 @@ static void xchg(void *array, unsigned i, unsigned j)
 	u[j] = tmp;
 }
 
-static int __gem_context_create(int fd, uint32_t *ctx_id)
-{
-	struct drm_i915_gem_context_create arg;
-	int ret = 0;
-
-	memset(&arg, 0, sizeof(arg));
-	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg))
-		ret = -errno;
-
-	*ctx_id = arg.ctx_id;
-	return ret;
-}
-
 static void sequential(int fd, uint32_t handle, unsigned flags, int timeout)
 {
 	const int ncpus = flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
diff --git a/tests/gem_exec_parallel.c b/tests/gem_exec_parallel.c
index 1c53bd64..5c0b027b 100644
--- a/tests/gem_exec_parallel.c
+++ b/tests/gem_exec_parallel.c
@@ -55,20 +55,11 @@ static void check_bo(int fd, uint32_t handle, int pass)
 	munmap(map, 4096);
 }
 
-static uint32_t __gem_context_create(int fd)
-{
-	struct drm_i915_gem_context_create arg;
-
-	memset(&arg, 0, sizeof(arg));
-	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg) == 0)
-		gem_context_destroy(fd, arg.ctx_id);
-
-	return arg.ctx_id;
-}
-
 static void gem_require_context(int fd)
 {
-	igt_require(__gem_context_create(fd));
+	uint32_t ctx_id = 0;
+	__gem_context_create(fd, &ctx_id);
+	igt_require(ctx_id);
 }
 
 static bool ignore_engine(int fd, unsigned engine)
diff --git a/tests/gem_exec_reuse.c b/tests/gem_exec_reuse.c
index 4e3907cf..11185de1 100644
--- a/tests/gem_exec_reuse.c
+++ b/tests/gem_exec_reuse.c
@@ -56,19 +56,6 @@ static void noop(struct noop *n,
 	gem_execbuf(n->fd, &execbuf);
 }
 
-static int __gem_context_create(int fd, uint32_t *ctx_id)
-{
-	struct drm_i915_gem_context_create arg;
-	int ret = 0;
-
-	memset(&arg, 0, sizeof(arg));
-	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg))
-		ret = -errno;
-
-	*ctx_id = arg.ctx_id;
-	return ret;
-}
-
 static int fls(uint64_t x)
 {
 	int t;
diff --git a/tests/gem_exec_whisper.c b/tests/gem_exec_whisper.c
index 51921ba3..90527b54 100644
--- a/tests/gem_exec_whisper.c
+++ b/tests/gem_exec_whisper.c
@@ -79,19 +79,6 @@ static void verify_reloc(int fd, uint32_t handle,
 	}
 }
 
-static int __gem_context_create(int fd, uint32_t *ctx_id)
-{
-	struct drm_i915_gem_context_create arg;
-	int ret = 0;
-
-	memset(&arg, 0, sizeof(arg));
-	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg))
-		ret = -errno;
-
-	*ctx_id = arg.ctx_id;
-	return ret;
-}
-
 static bool ignore_engine(int fd, unsigned engine)
 {
 	if (engine == 0)
-- 
2.14.2

_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply related	[flat|nested] 5+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] lib: Move __gem_context_create to common ioctl wrapper library.
  2018-02-02 18:25 [igt-dev] [PATCH i-g-t] lib: Move __gem_context_create to common ioctl wrapper library Antonio Argenziano
@ 2018-02-02 18:29 ` Antonio Argenziano
  2018-02-02 18:43 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
                   ` (2 subsequent siblings)
  3 siblings, 0 replies; 5+ messages in thread
From: Antonio Argenziano @ 2018-02-02 18:29 UTC (permalink / raw)
  To: igt-dev



On 02/02/18 10:25, Antonio Argenziano wrote:
> This patch adds a context creation ioctl wrapper that returns the error
> for the caller to consume. Multiple tests that implemented this already,
> have been changed to use the new library function.
> 
> v2:
> 	- Add gem_require_contexts() to check for contexts support (Chris)
> 
> v3:
> 	- Add gem_has_contexts to check for contexts support and change
> 	  gem_require_contexts to skip if contests support is not available.
> 	  (Chris)
> 
> v4:
> 	- Cosmetic changes and use lib function in gem_ctx_create where
> 	  possible. (Michal)
> 
> Signed-off-by: Antonio Argenziano <antonio.argenziano@intel.com>
> 
> Cc: Chris Wilson <chris@chris-wilson.co.uk>
> Cc: Michał Winiarski <michal.winiarski@intel.com>
> 
> Reviewed-by: Michał Winiarski <michal.winiarski@intel.com>

Resending after rebasing. Hopefully I haven't missed any new code that 
needed changing, another look from someone would be appreciated.

Thanks,
Antonio

> ---
>   benchmarks/gem_exec_ctx.c   |  6 ++---
>   benchmarks/gem_exec_trace.c |  4 +--
>   lib/i915/gem_context.c      | 61 +++++++++++++++++++++++++++++++++++++--------
>   lib/i915/gem_context.h      |  5 ++++
>   tests/gem_ctx_create.c      | 13 +++++-----
>   tests/gem_ctx_switch.c      | 13 ----------
>   tests/gem_eio.c             | 13 +---------
>   tests/gem_exec_await.c      | 14 ++---------
>   tests/gem_exec_nop.c        | 13 ----------
>   tests/gem_exec_parallel.c   | 15 +++--------
>   tests/gem_exec_reuse.c      | 13 ----------
>   tests/gem_exec_whisper.c    | 13 ----------
>   12 files changed, 74 insertions(+), 109 deletions(-)
> 
> diff --git a/benchmarks/gem_exec_ctx.c b/benchmarks/gem_exec_ctx.c
> index 0eac04b0..a1c6e5d7 100644
> --- a/benchmarks/gem_exec_ctx.c
> +++ b/benchmarks/gem_exec_ctx.c
> @@ -64,7 +64,7 @@ static uint32_t batch(int fd)
>   	return handle;
>   }
>   
> -static uint32_t __gem_context_create(int fd)
> +static uint32_t __gem_context_create_local(int fd)
>   {
>   	struct drm_i915_gem_context_create create;
>   
> @@ -101,7 +101,7 @@ static int loop(unsigned ring,
>   	execbuf.flags |= LOCAL_I915_EXEC_HANDLE_LUT;
>   	execbuf.flags |= LOCAL_I915_EXEC_NO_RELOC;
>   	if (mode != DEFAULT) {
> -		execbuf.rsvd1 = __gem_context_create(fd);
> +		execbuf.rsvd1 = __gem_context_create_local(fd);
>   		if (execbuf.rsvd1 == 0)
>   			return 77;
>   	}
> @@ -125,7 +125,7 @@ static int loop(unsigned ring,
>   			uint32_t ctx = 0;
>   
>   			if (mode != DEFAULT && mode != NOP) {
> -				execbuf.rsvd1 = __gem_context_create(fd);
> +				execbuf.rsvd1 = __gem_context_create_local(fd);
>   				ctx = gem_context_create(fd);
>   			}
>   
> diff --git a/benchmarks/gem_exec_trace.c b/benchmarks/gem_exec_trace.c
> index 12577649..2724ee92 100644
> --- a/benchmarks/gem_exec_trace.c
> +++ b/benchmarks/gem_exec_trace.c
> @@ -105,7 +105,7 @@ static double elapsed(const struct timespec *start, const struct timespec *end)
>   	return 1e3*(end->tv_sec - start->tv_sec) + 1e-6*(end->tv_nsec - start->tv_nsec);
>   }
>   
> -static uint32_t __gem_context_create(int fd)
> +static uint32_t __gem_context_create_local(int fd)
>   {
>   	struct drm_i915_gem_context_create arg = {};
>   	drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg);
> @@ -216,7 +216,7 @@ static double replay(const char *filename, long nop, long range)
>   				num_ctx = new_ctx;
>   			}
>   
> -			ctx[t->handle] = __gem_context_create(fd);
> +			ctx[t->handle] = __gem_context_create_local(fd);
>   			break;
>   		}
>   	case DEL_CTX:
> diff --git a/lib/i915/gem_context.c b/lib/i915/gem_context.c
> index 8f383a97..ad2032e1 100644
> --- a/lib/i915/gem_context.c
> +++ b/lib/i915/gem_context.c
> @@ -43,6 +43,52 @@
>    * software features improving submission model (context priority).
>    */
>   
> +/**
> + * gem_has_contexts:
> + * @fd: open i915 drm file descriptor
> + *
> + * Queries whether context creation is supported or not.
> + *
> + * Returns: Context creation availability.
> + */
> +bool gem_has_contexts(int fd)
> +{
> +	uint32_t ctx_id = 0;
> +
> +	__gem_context_create(fd, &ctx_id);
> +	if (ctx_id)
> +		gem_context_destroy(fd, ctx_id);
> +
> +	return ctx_id;
> +}
> +
> +/**
> + * gem_require_contexts:
> + * @fd: open i915 drm file descriptor
> + *
> + * This helper will automatically skip the test on platforms where context
> + * support is not available.
> + */
> +void gem_require_contexts(int fd)
> +{
> +	igt_require(gem_has_contexts(fd));
> +}
> +
> +int __gem_context_create(int fd, uint32_t *ctx_id)
> +{
> +       struct drm_i915_gem_context_create create;
> +       int err = 0;
> +
> +       memset(&create, 0, sizeof(create));
> +       if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create) == 0)
> +               *ctx_id = create.ctx_id;
> +       else
> +               err = -errno;
> +
> +       errno = 0;
> +       return err;
> +}
> +
>   /**
>    * gem_context_create:
>    * @fd: open i915 drm file descriptor
> @@ -55,18 +101,13 @@
>    */
>   uint32_t gem_context_create(int fd)
>   {
> -	struct drm_i915_gem_context_create create;
> +	uint32_t ctx_id;
> +	gem_require_contexts(fd);
>   
> -	memset(&create, 0, sizeof(create));
> -	if (igt_ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create)) {
> -		int err = -errno;
> -		igt_skip_on(err == -ENODEV || errno == -EINVAL);
> -		igt_assert_eq(err, 0);
> -	}
> -	igt_assert(create.ctx_id != 0);
> -	errno = 0;
> +	igt_assert_eq(__gem_context_create(fd, &ctx_id), 0);
> +	igt_assert(ctx_id != 0);
>   
> -	return create.ctx_id;
> +	return ctx_id;
>   }
>   
>   int __gem_context_destroy(int fd, uint32_t ctx_id)
> diff --git a/lib/i915/gem_context.h b/lib/i915/gem_context.h
> index 96106b71..aef68dda 100644
> --- a/lib/i915/gem_context.h
> +++ b/lib/i915/gem_context.h
> @@ -25,10 +25,15 @@
>   #define GEM_CONTEXT_H
>   
>   uint32_t gem_context_create(int fd);
> +int __gem_context_create(int fd, uint32_t *ctx_id);
>   void gem_context_destroy(int fd, uint32_t ctx_id);
>   int __gem_context_destroy(int fd, uint32_t ctx_id);
> +
> +bool gem_has_contexts(int fd);
> +void gem_require_contexts(int fd);
>   void gem_context_require_bannable(int fd);
>   void gem_context_require_param(int fd, uint64_t param);
> +
>   void gem_context_get_param(int fd, struct drm_i915_gem_context_param *p);
>   void gem_context_set_param(int fd, struct drm_i915_gem_context_param *p);
>   int __gem_context_set_param(int fd, struct drm_i915_gem_context_param *p);
> diff --git a/tests/gem_ctx_create.c b/tests/gem_ctx_create.c
> index ae0825a1..6a3a5fe8 100644
> --- a/tests/gem_ctx_create.c
> +++ b/tests/gem_ctx_create.c
> @@ -45,7 +45,7 @@ static unsigned all_nengine;
>   static unsigned ppgtt_engines[16];
>   static unsigned ppgtt_nengine;
>   
> -static int __gem_context_create(int fd, struct drm_i915_gem_context_create *arg)
> +static int __gem_context_create_local(int fd, struct drm_i915_gem_context_create *arg)
>   {
>   	int ret = 0;
>   	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, arg))
> @@ -241,6 +241,7 @@ static void maximum(int fd, int ncpus, unsigned mode)
>   	unsigned ctx_size = context_size(fd);
>   	uint32_t *contexts = NULL;
>   	unsigned long count = 0;
> +	uint32_t ctx_id;
>   
>   	memset(&create, 0, sizeof(create));
>   	do {
> @@ -255,14 +256,14 @@ static void maximum(int fd, int ncpus, unsigned mode)
>   
>   		err = -ENOMEM;
>   		if (avail_mem > (count + 1) * ctx_size)
> -			err = __gem_context_create(fd, &create);
> +			err = __gem_context_create(fd, &ctx_id);
>   		if (err) {
>   			igt_info("Created %lu contexts, before failing with '%s' [%d]\n",
>   				 count, strerror(-err), -err);
>   			break;
>   		}
>   
> -		contexts[count++] = create.ctx_id;
> +		contexts[count++] = ctx_id;
>   	} while (1);
>   	igt_require(count);
>   
> @@ -322,7 +323,7 @@ igt_main
>   		igt_require_gem(fd);
>   
>   		memset(&create, 0, sizeof(create));
> -		igt_require(__gem_context_create(fd, &create) == 0);
> +		igt_require(__gem_context_create_local(fd, &create) == 0);
>   		gem_context_destroy(fd, create.ctx_id);
>   
>   		for_each_engine(fd, engine) {
> @@ -347,7 +348,7 @@ igt_main
>   		memset(&create, 0, sizeof(create));
>   		create.ctx_id = rand();
>   		create.pad = 0;
> -		igt_assert_eq(__gem_context_create(fd, &create), 0);
> +		igt_assert_eq(__gem_context_create_local(fd, &create), 0);
>   		igt_assert(create.ctx_id != 0);
>   		gem_context_destroy(fd, create.ctx_id);
>   	}
> @@ -356,7 +357,7 @@ igt_main
>   		memset(&create, 0, sizeof(create));
>   		create.ctx_id = rand();
>   		create.pad = 1;
> -		igt_assert_eq(__gem_context_create(fd, &create), -EINVAL);
> +		igt_assert_eq(__gem_context_create_local(fd, &create), -EINVAL);
>   	}
>   
>   	igt_subtest("maximum-mem")
> diff --git a/tests/gem_ctx_switch.c b/tests/gem_ctx_switch.c
> index fdd67202..285fc1a1 100644
> --- a/tests/gem_ctx_switch.c
> +++ b/tests/gem_ctx_switch.c
> @@ -45,19 +45,6 @@
>   
>   #define INTERRUPTIBLE 1
>   
> -static int __gem_context_create(int fd, uint32_t *ctx_id)
> -{
> -	struct drm_i915_gem_context_create arg;
> -	int ret = 0;
> -
> -	memset(&arg, 0, sizeof(arg));
> -	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg))
> -		ret = -errno;
> -
> -	*ctx_id = arg.ctx_id;
> -	return ret;
> -}
> -
>   static double elapsed(const struct timespec *start, const struct timespec *end)
>   {
>   	return ((end->tv_sec - start->tv_sec) +
> diff --git a/tests/gem_eio.c b/tests/gem_eio.c
> index 6d5a10f2..430bfac5 100644
> --- a/tests/gem_eio.c
> +++ b/tests/gem_eio.c
> @@ -273,17 +273,6 @@ static void test_inflight_suspend(int fd)
>   	trigger_reset(fd);
>   }
>   
> -static uint32_t __gem_context_create(int fd)
> -{
> -	struct drm_i915_gem_context_create create;
> -
> -	memset(&create, 0, sizeof(create));
> -	if (ioctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &create))
> -		return 0;
> -
> -	return create.ctx_id;
> -}
> -
>   static void test_inflight_contexts(int fd)
>   {
>   	struct drm_i915_gem_execbuffer2 execbuf;
> @@ -295,7 +284,7 @@ static void test_inflight_contexts(int fd)
>   
>   	igt_require(gem_has_exec_fence(fd));
>   
> -	ctx[0] = __gem_context_create(fd);
> +	ctx[0] = gem_context_create(fd);
>   	igt_require(ctx[0]);
>   	for (unsigned int n = 1; n < ARRAY_SIZE(ctx); n++)
>   		ctx[n] = gem_context_create(fd);
> diff --git a/tests/gem_exec_await.c b/tests/gem_exec_await.c
> index 28b280ff..133492a7 100644
> --- a/tests/gem_exec_await.c
> +++ b/tests/gem_exec_await.c
> @@ -55,15 +55,6 @@ static bool ignore_engine(int fd, unsigned engine)
>   	return false;
>   }
>   
> -static uint32_t __gem_context_create(int fd)
> -{
> -	struct drm_i915_gem_context_create arg;
> -
> -	memset(&arg, 0, sizeof(arg));
> -	drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg);
> -	return arg.ctx_id;
> -}
> -
>   static void xchg_obj(void *array, unsigned i, unsigned j)
>   {
>   	struct drm_i915_gem_exec_object2 *obj = array;
> @@ -130,8 +121,7 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags)
>   					 LOCAL_I915_EXEC_HANDLE_LUT);
>   
>   		if (flags & CONTEXTS) {
> -			exec[e].execbuf.rsvd1 = __gem_context_create(fd);
> -			igt_require(exec[e].execbuf.rsvd1);
> +			exec[e].execbuf.rsvd1 = gem_context_create(fd);
>   		}
>   
>   		exec[e].exec[0].handle = gem_create(fd, 4096);
> @@ -174,7 +164,7 @@ static void wide(int fd, int ring_size, int timeout, unsigned int flags)
>   
>   			if (flags & CONTEXTS) {
>   				gem_context_destroy(fd, exec[e].execbuf.rsvd1);
> -				exec[e].execbuf.rsvd1 = __gem_context_create(fd);
> +				exec[e].execbuf.rsvd1 = gem_context_create(fd);
>   			}
>   
>   			exec[e].reloc.presumed_offset = exec[e].exec[1].offset;
> diff --git a/tests/gem_exec_nop.c b/tests/gem_exec_nop.c
> index 668dcb94..107195a7 100644
> --- a/tests/gem_exec_nop.c
> +++ b/tests/gem_exec_nop.c
> @@ -357,19 +357,6 @@ static void xchg(void *array, unsigned i, unsigned j)
>   	u[j] = tmp;
>   }
>   
> -static int __gem_context_create(int fd, uint32_t *ctx_id)
> -{
> -	struct drm_i915_gem_context_create arg;
> -	int ret = 0;
> -
> -	memset(&arg, 0, sizeof(arg));
> -	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg))
> -		ret = -errno;
> -
> -	*ctx_id = arg.ctx_id;
> -	return ret;
> -}
> -
>   static void sequential(int fd, uint32_t handle, unsigned flags, int timeout)
>   {
>   	const int ncpus = flags & FORKED ? sysconf(_SC_NPROCESSORS_ONLN) : 1;
> diff --git a/tests/gem_exec_parallel.c b/tests/gem_exec_parallel.c
> index 1c53bd64..5c0b027b 100644
> --- a/tests/gem_exec_parallel.c
> +++ b/tests/gem_exec_parallel.c
> @@ -55,20 +55,11 @@ static void check_bo(int fd, uint32_t handle, int pass)
>   	munmap(map, 4096);
>   }
>   
> -static uint32_t __gem_context_create(int fd)
> -{
> -	struct drm_i915_gem_context_create arg;
> -
> -	memset(&arg, 0, sizeof(arg));
> -	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg) == 0)
> -		gem_context_destroy(fd, arg.ctx_id);
> -
> -	return arg.ctx_id;
> -}
> -
>   static void gem_require_context(int fd)
>   {
> -	igt_require(__gem_context_create(fd));
> +	uint32_t ctx_id = 0;
> +	__gem_context_create(fd, &ctx_id);
> +	igt_require(ctx_id);
>   }
>   
>   static bool ignore_engine(int fd, unsigned engine)
> diff --git a/tests/gem_exec_reuse.c b/tests/gem_exec_reuse.c
> index 4e3907cf..11185de1 100644
> --- a/tests/gem_exec_reuse.c
> +++ b/tests/gem_exec_reuse.c
> @@ -56,19 +56,6 @@ static void noop(struct noop *n,
>   	gem_execbuf(n->fd, &execbuf);
>   }
>   
> -static int __gem_context_create(int fd, uint32_t *ctx_id)
> -{
> -	struct drm_i915_gem_context_create arg;
> -	int ret = 0;
> -
> -	memset(&arg, 0, sizeof(arg));
> -	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg))
> -		ret = -errno;
> -
> -	*ctx_id = arg.ctx_id;
> -	return ret;
> -}
> -
>   static int fls(uint64_t x)
>   {
>   	int t;
> diff --git a/tests/gem_exec_whisper.c b/tests/gem_exec_whisper.c
> index 51921ba3..90527b54 100644
> --- a/tests/gem_exec_whisper.c
> +++ b/tests/gem_exec_whisper.c
> @@ -79,19 +79,6 @@ static void verify_reloc(int fd, uint32_t handle,
>   	}
>   }
>   
> -static int __gem_context_create(int fd, uint32_t *ctx_id)
> -{
> -	struct drm_i915_gem_context_create arg;
> -	int ret = 0;
> -
> -	memset(&arg, 0, sizeof(arg));
> -	if (drmIoctl(fd, DRM_IOCTL_I915_GEM_CONTEXT_CREATE, &arg))
> -		ret = -errno;
> -
> -	*ctx_id = arg.ctx_id;
> -	return ret;
> -}
> -
>   static bool ignore_engine(int fd, unsigned engine)
>   {
>   	if (engine == 0)
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [igt-dev] ✓ Fi.CI.BAT: success for lib: Move __gem_context_create to common ioctl wrapper library.
  2018-02-02 18:25 [igt-dev] [PATCH i-g-t] lib: Move __gem_context_create to common ioctl wrapper library Antonio Argenziano
  2018-02-02 18:29 ` Antonio Argenziano
@ 2018-02-02 18:43 ` Patchwork
  2018-02-02 21:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
  2018-02-02 21:10 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2018-02-02 18:43 UTC (permalink / raw)
  To: Antonio Argenziano; +Cc: igt-dev

== Series Details ==

Series: lib: Move __gem_context_create to common ioctl wrapper library.
URL   : https://patchwork.freedesktop.org/series/37571/
State : success

== Summary ==

IGT patchset tested on top of latest successful build
c219cc5307474cb53612ca759354f9473955e110 tools: Clear unused fields in register spec

with latest DRM-Tip kernel build CI_DRM_3718
bde4e003ce54 drm-tip: 2018y-02m-02d-15h-03m-15s UTC integration manifest

No testlist changes.

Test debugfs_test:
        Subgroup read_all_entries:
                incomplete -> PASS       (fi-snb-2520m) fdo#103713
Test gem_exec_suspend:
        Subgroup basic-s4-devices:
                incomplete -> PASS       (fi-bdw-5557u) fdo#104162
Test kms_chamelium:
        Subgroup dp-crc-fast:
                pass       -> DMESG-FAIL (fi-kbl-7500u) fdo#103841

fdo#103713 https://bugs.freedesktop.org/show_bug.cgi?id=103713
fdo#104162 https://bugs.freedesktop.org/show_bug.cgi?id=104162
fdo#103841 https://bugs.freedesktop.org/show_bug.cgi?id=103841

fi-bdw-5557u     total:288  pass:267  dwarn:0   dfail:0   fail:0   skip:21  time:419s
fi-bdw-gvtdvm    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:427s
fi-blb-e6850     total:288  pass:223  dwarn:1   dfail:0   fail:0   skip:64  time:373s
fi-bsw-n3050     total:288  pass:242  dwarn:0   dfail:0   fail:0   skip:46  time:486s
fi-bwr-2160      total:288  pass:183  dwarn:0   dfail:0   fail:0   skip:105 time:283s
fi-bxt-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:482s
fi-bxt-j4205     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:487s
fi-byt-j1900     total:288  pass:253  dwarn:0   dfail:0   fail:0   skip:35  time:470s
fi-byt-n2820     total:288  pass:249  dwarn:0   dfail:0   fail:0   skip:39  time:459s
fi-cfl-s2        total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:566s
fi-elk-e7500     total:288  pass:229  dwarn:0   dfail:0   fail:0   skip:59  time:414s
fi-gdg-551       total:288  pass:179  dwarn:0   dfail:0   fail:1   skip:108 time:283s
fi-glk-1         total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:511s
fi-hsw-4770      total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:398s
fi-hsw-4770r     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:401s
fi-ilk-650       total:288  pass:228  dwarn:0   dfail:0   fail:0   skip:60  time:411s
fi-ivb-3520m     total:288  pass:259  dwarn:0   dfail:0   fail:0   skip:29  time:458s
fi-ivb-3770      total:288  pass:255  dwarn:0   dfail:0   fail:0   skip:33  time:418s
fi-kbl-7500u     total:288  pass:262  dwarn:1   dfail:1   fail:0   skip:24  time:461s
fi-kbl-7560u     total:288  pass:269  dwarn:0   dfail:0   fail:0   skip:19  time:498s
fi-kbl-7567u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:454s
fi-kbl-r         total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:500s
fi-pnv-d510      total:288  pass:222  dwarn:1   dfail:0   fail:0   skip:65  time:576s
fi-skl-6260u     total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:425s
fi-skl-6600u     total:288  pass:261  dwarn:0   dfail:0   fail:0   skip:27  time:509s
fi-skl-6700hq    total:288  pass:262  dwarn:0   dfail:0   fail:0   skip:26  time:527s
fi-skl-6700k2    total:288  pass:264  dwarn:0   dfail:0   fail:0   skip:24  time:486s
fi-skl-6770hq    total:288  pass:268  dwarn:0   dfail:0   fail:0   skip:20  time:487s
fi-skl-guc       total:288  pass:260  dwarn:0   dfail:0   fail:0   skip:28  time:415s
fi-skl-gvtdvm    total:288  pass:265  dwarn:0   dfail:0   fail:0   skip:23  time:432s
fi-snb-2520m     total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:524s
fi-snb-2600      total:288  pass:248  dwarn:0   dfail:0   fail:0   skip:40  time:397s
Blacklisted hosts:
fi-glk-dsi       total:288  pass:258  dwarn:0   dfail:0   fail:0   skip:30  time:467s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_858/issues.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* [igt-dev] ✗ Fi.CI.IGT: failure for lib: Move __gem_context_create to common ioctl wrapper library.
  2018-02-02 18:25 [igt-dev] [PATCH i-g-t] lib: Move __gem_context_create to common ioctl wrapper library Antonio Argenziano
  2018-02-02 18:29 ` Antonio Argenziano
  2018-02-02 18:43 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
@ 2018-02-02 21:04 ` Patchwork
  2018-02-02 21:10 ` [igt-dev] [PATCH i-g-t] " Chris Wilson
  3 siblings, 0 replies; 5+ messages in thread
From: Patchwork @ 2018-02-02 21:04 UTC (permalink / raw)
  To: Antonio Argenziano; +Cc: igt-dev

== Series Details ==

Series: lib: Move __gem_context_create to common ioctl wrapper library.
URL   : https://patchwork.freedesktop.org/series/37571/
State : failure

== Summary ==

Test kms_sysfs_edid_timing:
                pass       -> WARN       (shard-apl) fdo#100047
Test kms_flip:
        Subgroup 2x-plain-flip-ts-check:
                fail       -> PASS       (shard-hsw)
        Subgroup plain-flip-fb-recreate:
                pass       -> FAIL       (shard-apl) fdo#100368 +1
Test gem_eio:
        Subgroup in-flight-suspend:
                fail       -> PASS       (shard-hsw) fdo#104676
Test perf_pmu:
        Subgroup busy-double-start-vcs0:
                incomplete -> PASS       (shard-apl)
Test kms_setmode:
        Subgroup basic:
                fail       -> PASS       (shard-hsw) fdo#99912
Test perf:
        Subgroup enable-disable:
                fail       -> PASS       (shard-apl) fdo#103715
        Subgroup polling:
                pass       -> FAIL       (shard-hsw) fdo#102252 +1
Test kms_vblank:
        Subgroup pipe-c-accuracy-idle:
                pass       -> FAIL       (shard-hsw)
Test kms_cursor_crc:
        Subgroup cursor-128x128-suspend:
                incomplete -> PASS       (shard-hsw) fdo#103540
Test pm_rps:
        Subgroup waitboost:
                pass       -> FAIL       (shard-apl) fdo#102250

fdo#100047 https://bugs.freedesktop.org/show_bug.cgi?id=100047
fdo#100368 https://bugs.freedesktop.org/show_bug.cgi?id=100368
fdo#104676 https://bugs.freedesktop.org/show_bug.cgi?id=104676
fdo#99912 https://bugs.freedesktop.org/show_bug.cgi?id=99912
fdo#103715 https://bugs.freedesktop.org/show_bug.cgi?id=103715
fdo#102252 https://bugs.freedesktop.org/show_bug.cgi?id=102252
fdo#103540 https://bugs.freedesktop.org/show_bug.cgi?id=103540
fdo#102250 https://bugs.freedesktop.org/show_bug.cgi?id=102250

shard-apl        total:2836 pass:1748 dwarn:1   dfail:0   fail:22  skip:1064 time:12474s
shard-hsw        total:2836 pass:1733 dwarn:1   dfail:0   fail:11  skip:1090 time:11692s
shard-snb        total:2836 pass:1328 dwarn:1   dfail:0   fail:10  skip:1497 time:6460s
Blacklisted hosts:
shard-kbl        total:2836 pass:1863 dwarn:10  dfail:0   fail:22  skip:941 time:9498s

== Logs ==

For more details see: https://intel-gfx-ci.01.org/tree/drm-tip/IGTPW_858/shards.html
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

* Re: [igt-dev] [PATCH i-g-t] lib: Move __gem_context_create to common ioctl wrapper library.
  2018-02-02 18:25 [igt-dev] [PATCH i-g-t] lib: Move __gem_context_create to common ioctl wrapper library Antonio Argenziano
                   ` (2 preceding siblings ...)
  2018-02-02 21:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
@ 2018-02-02 21:10 ` Chris Wilson
  3 siblings, 0 replies; 5+ messages in thread
From: Chris Wilson @ 2018-02-02 21:10 UTC (permalink / raw)
  To: Antonio Argenziano, igt-dev; +Cc: Antonio

Quoting Antonio Argenziano (2018-02-02 18:25:54)
>  /**
>   * gem_context_create:
>   * @fd: open i915 drm file descriptor
> @@ -55,18 +101,13 @@
>   */
>  uint32_t gem_context_create(int fd)
>  {
> -       struct drm_i915_gem_context_create create;
> +       uint32_t ctx_id;
> +       gem_require_contexts(fd);

Spoilsport. Remember a newline after the variable block.

So having seen gem_has_contexts() split out I was hoping that all
context users would start requiring contexts themselves rather than have
this obnoxious requirement spam.

Fwiw, I much prefer igt_require(gem_has_contexts()) in the
fixtures/tests than gem_require_contexts(), just for the localisation
in the message.

Still this patch doesn't make anything worse, but it appears to missing
all the queues and other shared contexts... :-p
-Chris
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2018-02-02 21:11 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz / follow: Atom feed)
-- links below jump to the message on this page --
2018-02-02 18:25 [igt-dev] [PATCH i-g-t] lib: Move __gem_context_create to common ioctl wrapper library Antonio Argenziano
2018-02-02 18:29 ` Antonio Argenziano
2018-02-02 18:43 ` [igt-dev] ✓ Fi.CI.BAT: success for " Patchwork
2018-02-02 21:04 ` [igt-dev] ✗ Fi.CI.IGT: failure " Patchwork
2018-02-02 21:10 ` [igt-dev] [PATCH i-g-t] " Chris Wilson

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.