[igt-dev] [PATCH i-g-t 68/77] igt/dummyload: Require an intel_ctx_t for POLL_RUN and !ALL_ENGINES
Dixit, Ashutosh
ashutosh.dixit at intel.com
Wed Jun 16 02:25:01 UTC 2021
On Mon, 14 Jun 2021 09:38:53 -0700, Jason Ekstrand wrote:
>
> diff --git a/lib/igt_dummyload.c b/lib/igt_dummyload.c
> index b0a7b361c..25e49de47 100644
> --- a/lib/igt_dummyload.c
> +++ b/lib/igt_dummyload.c
> @@ -421,22 +421,12 @@ igt_spin_factory(int fd, const struct igt_spin_factory *opts)
> {
> igt_spin_t *spin;
>
> - if (opts->engine != ALL_ENGINES) {
> - struct intel_execution_engine2 e;
> - int class;
> -
> - if (opts->ctx) {
> - class = opts->ctx->cfg.engines[opts->engine].engine_class;
> - } else if (!gem_context_lookup_engine(fd, opts->engine,
> - opts->ctx_id, &e)) {
> - class = e.class;
> - } else {
> - gem_require_ring(fd, opts->engine);
> - class = gem_execbuf_flags_to_engine_class(opts->engine);
> - }
> + if ((opts->flags & IGT_SPIN_POLL_RUN) && opts->engine != ALL_ENGINES) {
> + unsigned int class;
>
> - if (opts->flags & IGT_SPIN_POLL_RUN)
> - igt_require(gem_class_can_store_dword(fd, class));
> + igt_assert(opts->ctx);
> + class = intel_ctx_engine_class(opts->ctx, opts->engine);
> + igt_require(gem_class_can_store_dword(fd, class));
> }
I am not sure if this is correct. If I straightforwardly enforce opts->ctx
and tranform the original logic I get this:
if (opts->engine != ALL_ENGINES) {
int class;
igt_assert(opts->ctx);
class = intel_ctx_engine_class(opts->ctx, opts->engine);
if (opts->flags & IGT_SPIN_POLL_RUN)
igt_require(gem_class_can_store_dword(fd, class));
}
or even
if (opts->engine != ALL_ENGINES) {
igt_assert(opts->ctx);
if (opts->flags & IGT_SPIN_POLL_RUN) {
int class = intel_ctx_engine_class(opts->ctx, opts->engine);
igt_require(gem_class_can_store_dword(fd, class));
}
}
Importantly, "igt_assert(opts->ctx)" is invoked independent of opts->flags,
unlike the code in the patch.
More information about the igt-dev
mailing list