All of lore.kernel.org
 help / color / mirror / Atom feed
From: Andi Shyti <andi.shyti@intel.com>
To: Tvrtko Ursulin <tvrtko.ursulin@linux.intel.com>
Cc: IGT dev <igt-dev@lists.freedesktop.org>, Andi Shyti <andi@etezian.org>
Subject: Re: [igt-dev] [PATCH v24 02/14] lib/i915: add gem_engine_topology library and for_each loop definition
Date: Wed, 22 May 2019 14:39:31 +0300	[thread overview]
Message-ID: <20190522113912.GA23120@intel.intel> (raw)
In-Reply-To: <bc34d327-19db-0c29-fa81-23a4a3dfb571@linux.intel.com>

> > +	p->size = (p->size - sizeof(struct i915_context_param_engines)) /
> > +		  (offsetof(struct i915_context_param_engines,
> > +			    engines[1]) -
> > +		  sizeof(struct i915_context_param_engines));
> 
> So param.size starts with number of bytes, but then becomes number of
> engines? It's a bit evil and non-obvious, because a line below confused me:

this was a review from Chris and later on I use indeed size as
engine count.

I understand it's a bit unclear given that in the kernel it has a
slightly different meaning.

> > +	igt_assert_f(p->size <= GEM_MAX_ENGINES, "unsupported engine count\n");

[...]

> > +	if (!param.size) {
> > +		query_engine_list(fd, &engine_data);
> > +		ctx_map_engines(fd, &engine_data, &param);
> > +	} else {
> > +		for (i = 0; i < param.size; i++)
> 
> This one. It is an apparent mismatch between indices and bytes.
> 
> Put a comment with this block saying in what case we get here and the trick
> with param.size you play.

I will add a few comments to make it more clear.

> > +int gem_context_lookup_engine(int fd, uint64_t engine, uint32_t ctx_id,
> > +			      struct intel_execution_engine2 *e)
> > +{
> > +	DEFINE_CONTEXT_PARAM(engines, param, ctx_id, GEM_MAX_ENGINES);
> > +
> > +	if (!e || gem_topology_get_param(fd, &param) || !param.size)

> You expect a NULL e here and to what purpose?

just to be a bit paranoic, besides I wouldn't like a segfault in
my function :)

> Best to just disallow it I think.

isn't 'return -EINVAL' enough? igt_assert?

> Also param.size == 0? It can't be possible due how you define the structure
> a line above it.

yes, but before I call 'gem_topology_get_param()' where size
might get overridden.

[...]

> And please put a follow up to add API docs on your TODO list shortly after
> we merge this.

OK.

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

  reply	other threads:[~2019-05-22 11:39 UTC|newest]

Thread overview: 33+ messages / expand[flat|nested]  mbox.gz  Atom feed  top
2019-05-13 17:55 [igt-dev] [PATCH v24 00/14] new engine discovery interface Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 01/14] include/drm-uapi: import i915_drm.h header file Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 02/14] lib/i915: add gem_engine_topology library and for_each loop definition Andi Shyti
2019-05-22 11:16   ` Tvrtko Ursulin
2019-05-22 11:39     ` Andi Shyti [this message]
2019-05-22 11:41       ` Tvrtko Ursulin
2019-05-22 13:38     ` [igt-dev] [PATCH v25 " Andi Shyti
2019-05-22 13:45       ` Tvrtko Ursulin
2019-05-13 17:56 ` [igt-dev] [PATCH v24 03/14] lib: igt_gt: add execution buffer flags to class helper Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 04/14] lib: igt_gt: make gem_engine_can_store_dword() check engine class Andi Shyti
2019-05-14  9:07   ` Chris Wilson
2019-05-14  9:25     ` Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 05/14] lib: igt_dummyload: use for_each_context_engine() Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 06/14] test: perf_pmu: use the gem_engine_topology library Andi Shyti
2019-05-14  8:55   ` Tvrtko Ursulin
2019-05-14  9:29     ` Andi Shyti
2019-05-15 12:08   ` [igt-dev] [PATCH v25 6/14] " Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 07/14] test/i915: gem_busy: " Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 08/14] test/i915: gem_cs_tlb: " Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 09/14] test/i915: gem_ctx_exec: " Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 10/14] test/i915: gem_exec_basic: " Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 11/14] test/i915: gem_exec_parallel: " Andi Shyti
2019-05-14  9:12   ` Chris Wilson
2019-05-13 17:56 ` [igt-dev] [PATCH v24 12/14] test/i915: gem_exec_store: " Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 13/14] test/i915: gem_wait: " Andi Shyti
2019-05-13 17:56 ` [igt-dev] [PATCH v24 14/14] test/i915: i915_hangman: " Andi Shyti
2019-05-14  9:13   ` Chris Wilson
2019-05-14  9:26     ` Andi Shyti
2019-05-13 18:26 ` [igt-dev] ✓ Fi.CI.BAT: success for new engine discovery interface Patchwork
2019-05-13 23:12 ` [igt-dev] ✓ Fi.CI.IGT: " Patchwork
2019-05-15 12:35 ` [igt-dev] ✗ Fi.CI.BAT: failure for new engine discovery interface (rev2) Patchwork
2019-05-22 14:36 ` [igt-dev] ✓ Fi.CI.BAT: success for new engine discovery interface (rev3) Patchwork
2019-05-23 10:37 ` [igt-dev] ✓ Fi.CI.IGT: " 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=20190522113912.GA23120@intel.intel \
    --to=andi.shyti@intel.com \
    --cc=andi@etezian.org \
    --cc=igt-dev@lists.freedesktop.org \
    --cc=tvrtko.ursulin@linux.intel.com \
    /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.