[igt-dev] [Intel-gfx] [PATCH igt] lib: Run gem_test_engine() in an isolated context
Tvrtko Ursulin
tvrtko.ursulin at linux.intel.com
Thu Mar 22 15:48:50 UTC 2018
On 22/03/2018 14:12, Chris Wilson wrote:
> Ignore the shennigans of the test surrounding the library call to
> gem_test_engine() and focus on answering the query of whether the engine
> exists and is operational.
>
> Signed-off-by: Chris Wilson <chris at chris-wilson.co.uk>
> Cc: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
> ---
> lib/i915/gem_submission.c | 23 +++++++++++++++++++----
> 1 file changed, 19 insertions(+), 4 deletions(-)
>
> diff --git a/lib/i915/gem_submission.c b/lib/i915/gem_submission.c
> index c5e96969..062b8b93 100644
> --- a/lib/i915/gem_submission.c
> +++ b/lib/i915/gem_submission.c
> @@ -22,6 +22,7 @@
> */
>
> #include <errno.h>
> +#include <fcntl.h>
> #include <stdbool.h>
> #include <sys/ioctl.h>
>
> @@ -164,6 +165,17 @@ bool gem_has_guc_submission(int fd)
> return gem_submission_method(fd) & GEM_SUBMISSION_GUC;
> }
>
> +static int reopen_driver(int fd)
> +{
> + char path[256];
> +
> + snprintf(path, sizeof(path), "/proc/self/fd/%d", fd);
> + fd = open(path, O_RDWR);
> + igt_assert_lte(0, fd);
We have igt_assert_fd if you want it.
> +
> + return fd;
> +}
> +
> static bool is_wedged(int i915)
> {
> int err = 0;
> @@ -183,19 +195,20 @@ static bool is_wedged(int i915)
> void gem_test_engine(int i915, unsigned int engine)
> {
> const uint32_t bbe = MI_BATCH_BUFFER_END;
> - struct drm_i915_gem_exec_object2 obj = {
> - .handle = gem_create(i915, 4096)
> - };
> + struct drm_i915_gem_exec_object2 obj = { };
> struct drm_i915_gem_execbuffer2 execbuf = {
> .buffers_ptr = to_user_pointer(&obj),
> .buffer_count = 1,
> };
>
> + i915 = reopen_driver(i915);
> igt_assert(!is_wedged(i915));
> +
> + obj.handle = gem_create(i915, 4096);
> gem_write(i915, obj.handle, 0, &bbe, sizeof(bbe));
>
> if (engine == ALL_ENGINES) {
> - for_each_engine(i915, engine) {
> + for_each_physical_engine(i915, engine) {
> execbuf.flags = engine;
> gem_execbuf(i915, &execbuf);
> }
> @@ -207,4 +220,6 @@ void gem_test_engine(int i915, unsigned int engine)
> gem_close(i915, obj.handle);
>
> igt_assert(!is_wedged(i915));
> +
> + close(i915);
> }
>
Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Tested-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
Regards,
Tvrtko
More information about the igt-dev
mailing list