summaryrefslogtreecommitdiff
path: root/tests/i915/gem_exec_schedule.c
diff options
context:
space:
mode:
authorZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2022-04-21 08:09:55 +0200
committerZbigniew Kempczyński <zbigniew.kempczynski@intel.com>2022-04-22 12:41:07 +0200
commite1492eaa7fce69519ba50f756a59b5b6485a9483 (patch)
tree2d2ca6f3782b13146028a6c406344f21fb20d377 /tests/i915/gem_exec_schedule.c
parent53fa2bbadaf9be4073c8a9b3189ec0c98887a0be (diff)
tests/i915/gem_exec_schedule: Use separate context for spinner
Iterating over all physical engines on default context is wrong and it may end with failure when there're more engines than default context contains. To handle this we should create separate context on top of all-physical-engines config. Signed-off-by: Zbigniew Kempczyński <zbigniew.kempczynski@intel.com> Cc: Kamil Konieczny <kamil.konieczny@linux.intel.com> Fixes: https://gitlab.freedesktop.org/drm/intel/-/issues/5444 (semaphore-resolved). Reviewed-by: Kamil Konieczny <kamil.konieczny@linux.intel.com>
Diffstat (limited to 'tests/i915/gem_exec_schedule.c')
-rw-r--r--tests/i915/gem_exec_schedule.c6
1 files changed, 4 insertions, 2 deletions
diff --git a/tests/i915/gem_exec_schedule.c b/tests/i915/gem_exec_schedule.c
index dfcff849..cf2625cb 100644
--- a/tests/i915/gem_exec_schedule.c
+++ b/tests/i915/gem_exec_schedule.c
@@ -1065,7 +1065,7 @@ static void semaphore_resolve(int i915, const intel_ctx_cfg_t *cfg,
const struct intel_execution_engine2 *e;
const uint32_t SEMAPHORE_ADDR = 64 << 10;
uint32_t semaphore, *sema;
- const intel_ctx_t *outer, *inner;
+ const intel_ctx_t *spin_ctx, *outer, *inner;
uint64_t ahnd = get_reloc_ahnd(i915, 0);
/*
@@ -1080,6 +1080,7 @@ static void semaphore_resolve(int i915, const intel_ctx_cfg_t *cfg,
igt_require(gem_scheduler_has_preemption(i915));
igt_require(intel_get_drm_devid(i915) >= 8); /* for MI_SEMAPHORE_WAIT */
+ spin_ctx = intel_ctx_create(i915, cfg);
outer = intel_ctx_create(i915, cfg);
inner = intel_ctx_create(i915, cfg);
@@ -1097,7 +1098,7 @@ static void semaphore_resolve(int i915, const intel_ctx_cfg_t *cfg,
if (!gem_class_can_store_dword(i915, e->class))
continue;
- spin = __igt_spin_new(i915, .ahnd = ahnd,
+ spin = __igt_spin_new(i915, .ahnd = ahnd, .ctx = spin_ctx,
.engine = e->flags, .flags = flags);
igt_spin_end(spin); /* we just want its address for later */
gem_sync(i915, spin->handle);
@@ -1190,6 +1191,7 @@ static void semaphore_resolve(int i915, const intel_ctx_cfg_t *cfg,
intel_ctx_destroy(i915, inner);
intel_ctx_destroy(i915, outer);
+ intel_ctx_destroy(i915, spin_ctx);
put_ahnd(ahnd);
}