diff options
author | Alan Previn <alan.previn.teres.alexis@intel.com> | 2021-10-05 12:41:30 -0700 |
---|---|---|
committer | Rodrigo Vivi <rodrigo.vivi@intel.com> | 2021-10-06 05:08:29 -0400 |
commit | 248caa4cebce899365734b95e4d3278b5dded03c (patch) | |
tree | 90419acdddf50ad5b94ca64b3660710be7055102 /tests/i915/gem_pxp.c | |
parent | 849c224e3f2bb399160a5ec667c086ea795e203d (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>
Diffstat (limited to 'tests/i915/gem_pxp.c')
-rw-r--r-- | tests/i915/gem_pxp.c | 23 |
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 { |