summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMika Kuoppala <mika.kuoppala@linux.intel.com>2020-08-13 16:30:18 +0300
committerMika Kuoppala <mika.kuoppala@linux.intel.com>2020-08-17 14:57:34 +0300
commite65395e03b8c2c407d9da962dc1991e75ff30153 (patch)
tree85a454e23ea5ad5ac5c592448a3e5512ed7d1818
parent4e5f76be680b65780204668e302026cf638decc9 (diff)
tests/gen7_exec_parse: Test masked registers
There were no test to test the masked registers. LRR is prohibited with masked registers. Add testcase to confirm it. Cc: Jon Bloomfield <jon.bloomfield@intel.com> Cc: Chris Wilson <chris@chris-wilson.co.uk> Signed-off-by: Mika Kuoppala <mika.kuoppala@linux.intel.com>
-rw-r--r--tests/i915/gen7_exec_parse.c23
1 files changed, 23 insertions, 0 deletions
diff --git a/tests/i915/gen7_exec_parse.c b/tests/i915/gen7_exec_parse.c
index 2ba438c9..22ccbc68 100644
--- a/tests/i915/gen7_exec_parse.c
+++ b/tests/i915/gen7_exec_parse.c
@@ -398,6 +398,8 @@ static void hsw_load_register_reg(void)
OACONTROL, /* filtered */
DERRMR, /* master only */
0x2038, /* RING_START: invalid */
+ 0xb038, /* HSW_SCRATCH1 masked */
+ 0xe49c /* HSW_ROW_CHICKEN3 masked */
};
int fd;
uint32_t handle;
@@ -439,6 +441,7 @@ static void hsw_load_register_reg(void)
store_gpr0, sizeof(store_gpr0),
2 * sizeof(uint32_t), /* reloc */
0xabcdabc0);
+ igt_debug("Testing disallowed reg src 0x%08x\n", disallowed_regs[i]);
do_lrr[1] = disallowed_regs[i];
exec_batch(fd, handle, do_lrr, sizeof(do_lrr),
I915_EXEC_RENDER,
@@ -449,6 +452,26 @@ static void hsw_load_register_reg(void)
0xabcdabc0);
}
+ for (int i = 0 ; i < ARRAY_SIZE(disallowed_regs); i++) {
+ exec_batch(fd, handle, init_gpr0, sizeof(init_gpr0),
+ I915_EXEC_RENDER,
+ 0);
+ exec_batch_patched(fd, handle,
+ store_gpr0, sizeof(store_gpr0),
+ 2 * sizeof(uint32_t), /* reloc */
+ 0xabcdabc0);
+ igt_debug("Testing disallowed reg dst 0x%08x\n", disallowed_regs[i]);
+ do_lrr[1] = HSW_CS_GPR0;
+ do_lrr[2] = disallowed_regs[i];
+ exec_batch(fd, handle, do_lrr, sizeof(do_lrr),
+ I915_EXEC_RENDER,
+ bad_lrr_errno);
+ exec_batch_patched(fd, handle,
+ store_gpr0, sizeof(store_gpr0),
+ 2 * sizeof(uint32_t), /* reloc */
+ 0xabcdabc0);
+ }
+
close(fd);
}