summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlan Previn <alan.previn.teres.alexis@intel.com>2021-10-05 12:41:30 -0700
committerRodrigo Vivi <rodrigo.vivi@intel.com>2021-10-06 05:08:29 -0400
commit248caa4cebce899365734b95e4d3278b5dded03c (patch)
tree90419acdddf50ad5b94ca64b3660710be7055102
parent849c224e3f2bb399160a5ec667c086ea795e203d (diff)
tests/i915/gem_pxp: Verify execbuf ok with stale PXP buf in opt-out use
Add a check to verify that reusing a stale protected buffer in a gem_execbuff call, but using a regular (not- protected) context will succeed after a teardown event. Trigger the teardown via the pxp invalidation debugfs that simulates a HW teardown IRQ. This ensures that user space applications that choose not to opt-in for strict PXP teardown awareness (by using a regular context) won't suffer gem_execbuff failures if a protected buffer was among the assets used in any of its rendering operations. Signed-off-by: Alan Previn <alan.previn.teres.alexis@intel.com> Reviewed-by: Rodrigo Vivi <rodrigo.vivi@intel.com> Signed-off-by: Rodrigo Vivi <rodrigo.vivi@intel.com>
-rw-r--r--tests/i915/gem_pxp.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/i915/gem_pxp.c b/tests/i915/gem_pxp.c
index 22a2e5a4..8e3bc3cf 100644
--- a/tests/i915/gem_pxp.c
+++ b/tests/i915/gem_pxp.c
@@ -829,6 +829,27 @@ static void test_pxp_stale_buf_execution(int i915)
free_exec_assets(i915, &data);
}
+static void test_pxp_stale_buf_optout_execution(int i915)
+{
+ int ret;
+ struct simple_exec_assets data = {0};
+
+ /*
+ * Use a normal context for testing opt-out behavior
+ * when executing with a pxp buffer across a teardown event.
+ */
+ prepare_exec_assets(i915, &data, false, true);
+ ret = gem_execbuf_flush_store_dw(i915, data.ibb, data.ctx, data.fencebuf);
+ igt_assert(ret == 0);
+
+ trigger_pxp_debugfs_forced_teardown(i915);
+
+ ret = gem_execbuf_flush_store_dw(i915, data.ibb, data.ctx, data.fencebuf);
+ igt_assert_f((ret == 0), "Opt-out-execution with stale pxp buffer didn't succeed\n");
+
+ free_exec_assets(i915, &data);
+}
+
igt_main
{
int i915 = -1;
@@ -922,6 +943,8 @@ igt_main
test_pxp_stale_ctx_execution(i915);
igt_subtest("verify-pxp-stale-buf-execution")
test_pxp_stale_buf_execution(i915);
+ igt_subtest("verify-pxp-stale-buf-optout-execution")
+ test_pxp_stale_buf_optout_execution(i915);
}
igt_fixture {