All of lore.kernel.org
 help / color / mirror / Atom feed
From: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
To: Andi Shyti <andi.shyti@intel.com>,
	IGT dev <igt-dev@lists.freedesktop.org>
Cc: Andi Shyti <andi@etezian.org>
Subject: Re: [igt-dev] [PATCH v19 5/6] lib: igt_dummyload: use for_each_context_engine()
Date: Mon, 8 Apr 2019 17:28:23 +0100	[thread overview]
Message-ID: <5bec9ae6-aaf4-4c65-b300-c51985b889b0@linux.intel.com> (raw)
In-Reply-To: <20190408161533.2421-6-andi.shyti@intel.com>


On 08/04/2019 17:15, Andi Shyti wrote:
> With the new getparam/setparam api, engines are mapped to
> context. Use for_each_context_engine() to loop through existing
> engines.
> 
> Suggested-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>
> Signed-off-by: Andi Shyti <andi.shyti@intel.com>
> ---
>   lib/igt_dummyload.c | 34 +++++++++++++++++++++-------------
>   1 file changed, 21 insertions(+), 13 deletions(-)
> 
> diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
> index 47f6b92b424b..1d922fb698e0 100644
> --- a/lib/igt_dummyload.c
> +++ b/lib/igt_dummyload.c
> @@ -39,6 +39,7 @@
>   #include "ioctl_wrappers.h"
>   #include "sw_sync.h"
>   #include "igt_vgem.h"
> +#include "i915/gem_engine_topology.h"
>   #include "i915/gem_mman.h"
>   
>   /**
> @@ -86,7 +87,7 @@ emit_recursive_batch(igt_spin_t *spin,
>   	struct drm_i915_gem_relocation_entry relocs[2], *r;
>   	struct drm_i915_gem_execbuffer2 *execbuf;
>   	struct drm_i915_gem_exec_object2 *obj;
> -	unsigned int engines[16];
> +	unsigned int flags[GEM_MAX_ENGINES];
>   	unsigned int nengine;
>   	int fence_fd = -1;
>   	uint32_t *batch, *batch_start;
> @@ -94,17 +95,30 @@ emit_recursive_batch(igt_spin_t *spin,
>   
>   	nengine = 0;
>   	if (opts->engine == ALL_ENGINES) {
> -		unsigned int engine;
> +		struct intel_execution_engine2 *engine;
>   
> -		for_each_physical_engine(fd, engine) {
> +		for_each_context_engine(fd, opts->ctx, engine) {
>   			if (opts->flags & IGT_SPIN_POLL_RUN &&
> -			    !gem_can_store_dword(fd, engine))
> +			    !gem_class_can_store_dword(fd, engine->class))
>   				continue;
>   
> -			engines[nengine++] = engine;
> +			flags[nengine++] = engine->flags;
>   		}
>   	} else {
> -		engines[nengine++] = opts->engine;
> +		struct intel_execution_engine2 *e;
> +		int class;
> +
> +		if (!gem_ctx_get_engine(fd, opts->engine, opts->ctx, e)) {
> +			class = e->class;
> +		} else {
> +			gem_require_ring(fd, opts->engine);
> +			class = gem_eb_to_class(opts->engine);
> +		}
> +
> +		if (opts->flags & IGT_SPIN_POLL_RUN)
> +			igt_require(gem_class_can_store_dword(fd, class));
> +
> +		flags[nengine++] = opts->engine;
>   	}

Patch looks good but I'm afraid I made an oversight earlier in review 
when I asked you to move this else block in this function. I forgot that 
the differentiation between igt_spin_batch_new and __igt_spin_batch_new 
was that the latter should not do any execbuf calls apart from the 
spinner itself. Since gem_require_ring does one it could be a problem.

Would you mind moving just this else block back into the main constructor?

With that you can have:

Reviewed-by: Tvrtko Ursulin <tvrtko.ursulin@intel.com>

Regards,

Tvrtko

>   	igt_require(nengine);
>   
> @@ -234,7 +248,7 @@ emit_recursive_batch(igt_spin_t *spin,
>   
>   	for (i = 0; i < nengine; i++) {
>   		execbuf->flags &= ~ENGINE_MASK;
> -		execbuf->flags |= engines[i];
> +		execbuf->flags |= flags[i];
>   
>   		gem_execbuf_wr(fd, execbuf);
>   
> @@ -308,12 +322,6 @@ igt_spin_batch_factory(int fd, const struct igt_spin_factory *opts)
>   
>   	igt_require_gem(fd);
>   
> -	if (opts->engine != ALL_ENGINES) {
> -		gem_require_ring(fd, opts->engine);
> -		if (opts->flags & IGT_SPIN_POLL_RUN)
> -			igt_require(gem_can_store_dword(fd, opts->engine));
> -	}
> -
>   	spin = spin_batch_create(fd, opts);
>   
>   	igt_assert(gem_bo_busy(fd, spin->handle));
> 
_______________________________________________
igt-dev mailing list
igt-dev@lists.freedesktop.org
https://lists.freedesktop.org/mailman/listinfo/igt-dev

  reply	other threads:[~2019-04-08 16:28 UTC|newest]

Thread overview: 43+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-04-08 16:15 [igt-dev] [PATCH v19 0/6] new engine discovery interface Andi Shyti
2019-04-08 16:15 ` [igt-dev] [PATCH v19 1/6] include/drm-uapi: import i915_drm.h header file Andi Shyti
2019-04-08 16:37   ` Tvrtko Ursulin
2019-04-08 16:47     ` Andi Shyti
2019-04-08 16:56       ` Tvrtko Ursulin
2019-04-08 18:33         ` Antonio Argenziano
2019-04-09  7:33           ` Tvrtko Ursulin
2019-04-08 16:15 ` [igt-dev] [PATCH v19 2/6] lib/i915: add gem_engine_topology library and for_each loop definition Andi Shyti
2019-04-08 16:54   ` Tvrtko Ursulin
2019-04-08 18:21     ` Andi Shyti
2019-04-11 16:03   ` Tvrtko Ursulin
2019-04-11 23:23     ` Andi Shyti
2019-04-08 16:15 ` [igt-dev] [PATCH v19 3/6] lib: igt_gt: add eb flags to class helper Andi Shyti
2019-04-08 16:24   ` Tvrtko Ursulin
2019-04-08 16:15 ` [igt-dev] [PATCH v19 4/6] lib: igt_gt: make gem_engine_can_store_dword() check engine class Andi Shyti
2019-04-08 16:25   ` Tvrtko Ursulin
2019-04-08 16:15 ` [igt-dev] [PATCH v19 5/6] lib: igt_dummyload: use for_each_context_engine() Andi Shyti
2019-04-08 16:28   ` Tvrtko Ursulin [this message]
2019-04-08 16:45     ` Andi Shyti
2019-04-11 12:26   ` [RFT i-g-t 6/6] test: perf_pmu: use the gem_engine_topology library Tvrtko Ursulin
2019-04-11 12:26     ` [igt-dev] " Tvrtko Ursulin
2019-04-11 12:32     ` Chris Wilson
2019-04-11 12:32       ` [Intel-gfx] " Chris Wilson
2019-04-11 12:53       ` Tvrtko Ursulin
2019-04-11 12:53         ` Tvrtko Ursulin
2019-04-11 13:50         ` Chris Wilson
2019-04-11 13:50           ` Chris Wilson
2019-04-11 14:37           ` Tvrtko Ursulin
2019-04-11 14:37             ` Tvrtko Ursulin
2019-04-11 13:01       ` Andi Shyti
2019-04-11 13:01         ` [igt-dev] [Intel-gfx] " Andi Shyti
2019-04-11 13:40         ` [igt-dev] " Chris Wilson
2019-04-11 13:40           ` [igt-dev] [Intel-gfx] " Chris Wilson
2019-04-11 14:55           ` [igt-dev] " Andi Shyti
2019-04-11 14:55             ` [igt-dev] [Intel-gfx] " Andi Shyti
2019-04-11 12:28   ` [RFT i-g-t 5/6] lib: igt_dummyload: use for_each_context_engine() Tvrtko Ursulin
2019-04-11 12:28     ` [igt-dev] " Tvrtko Ursulin
2019-04-08 16:15 ` [igt-dev] [PATCH v19 6/6] test: perf_pmu: use the gem_engine_topology library Andi Shyti
2019-04-08 16:35   ` Tvrtko Ursulin
2019-04-08 16:56     ` Andi Shyti
2019-04-08 17:35 ` [igt-dev] ✗ Fi.CI.BAT: failure for new engine discovery interface Patchwork
2019-04-11 14:54 ` [igt-dev] ✗ Fi.CI.BAT: failure for new engine discovery interface (rev3) Patchwork
2019-04-11 18:11 ` [igt-dev] ✗ Fi.CI.BAT: failure for new engine discovery interface (rev4) Patchwork

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=5bec9ae6-aaf4-4c65-b300-c51985b889b0@linux.intel.com \
    --to=tvrtko.ursulin@linux.intel.com \
    --cc=andi.shyti@intel.com \
    --cc=andi@etezian.org \
    --cc=igt-dev@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 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.