Allow the kernel the rights to reject updating an active VM with -EBUSY. Signed-off-by: Chris Wilson <chris@xxxxxxxxxxxxxxxxxx> --- tests/i915/gem_ctx_param.c | 13 +++++++------ tests/i915/gem_vm_create.c | 11 ++++++++++- 2 files changed, 17 insertions(+), 7 deletions(-) diff --git a/tests/i915/gem_ctx_param.c b/tests/i915/gem_ctx_param.c index 179992875..b2940abc2 100644 --- a/tests/i915/gem_ctx_param.c +++ b/tests/i915/gem_ctx_param.c @@ -211,13 +211,14 @@ static void test_vm(int i915) gem_execbuf(i915, &eb); igt_assert_eq_u64(batch.offset, nonzero_offset); + /* Note: changing an active ctx->vm may be verboten */ arg.ctx_id = child; - gem_context_set_param(i915, &arg); - - eb.rsvd1 = child; - batch.offset = 0; - gem_execbuf(i915, &eb); - igt_assert_eq_u64(batch.offset, nonzero_offset); + if (__gem_context_set_param(i915, &arg) != -EBUSY) { + eb.rsvd1 = child; + batch.offset = 0; + gem_execbuf(i915, &eb); + igt_assert_eq_u64(batch.offset, nonzero_offset); + } gem_context_destroy(i915, child); gem_context_destroy(i915, parent); diff --git a/tests/i915/gem_vm_create.c b/tests/i915/gem_vm_create.c index e14b07b5f..a6d2dd91b 100644 --- a/tests/i915/gem_vm_create.c +++ b/tests/i915/gem_vm_create.c @@ -164,6 +164,7 @@ static void check_same_vm(int i915, uint32_t ctx_a, uint32_t ctx_b) eb.rsvd1 = ctx_a; gem_execbuf(i915, &eb); igt_assert_eq_u64(batch.offset, 48 << 20); + gem_sync(i915, batch.handle); /* be still */ /* An already active VMA will try to keep its offset */ batch.offset = 0; @@ -224,6 +225,7 @@ static void execbuf(int i915) batch.offset = 48 << 20; gem_execbuf(i915, &eb); igt_assert_eq_u64(batch.offset, 48 << 20); + gem_sync(i915, batch.handle); arg.value = gem_vm_create(i915); gem_context_set_param(i915, &arg); @@ -231,6 +233,8 @@ static void execbuf(int i915) igt_assert_eq_u64(batch.offset, 48 << 20); gem_vm_destroy(i915, arg.value); + gem_sync(i915, batch.handle); /* be idle! */ + arg.value = gem_vm_create(i915); gem_context_set_param(i915, &arg); batch.offset = 0; @@ -354,13 +358,18 @@ static void async_destroy(int i915) .param = I915_CONTEXT_PARAM_VM, }; igt_spin_t *spin[2]; + int err; spin[0] = igt_spin_new(i915, .ctx = arg.ctx_id, .flags = IGT_SPIN_POLL_RUN); igt_spin_busywait_until_started(spin[0]); - gem_context_set_param(i915, &arg); + err = __gem_context_set_param(i915, &arg); + if (err == -EBUSY) /* update while busy may be verboten, let it ride. */ + err = 0; + igt_assert_eq(err, 0); + spin[1] = __igt_spin_new(i915, .ctx = arg.ctx_id); igt_spin_end(spin[0]); -- 2.25.1 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx https://lists.freedesktop.org/mailman/listinfo/intel-gfx