diff mbox

[igt,v3,09/11] igt/gem_exec_parse: update hsw_load_register_reg for v >= 8

Message ID 20161109161602.2402-10-robert@sixbynine.org (mailing list archive)
State New, archived
Headers show

Commit Message

Robert Bragg Nov. 9, 2016, 4:16 p.m. UTC
This updates the checking of disallowed loads to set a distinguishable
value before the load and explicitly check the load was a NOOP by
reading back the final value.

Signed-off-by: Robert Bragg <robert@sixbynine.org>
---
 tests/gem_exec_parse.c | 20 ++++++++++++++++++--
 1 file changed, 18 insertions(+), 2 deletions(-)

Comments

Matthew Auld Nov. 11, 2016, 10:14 p.m. UTC | #1
On 9 November 2016 at 16:16, Robert Bragg <robert@sixbynine.org> wrote:
> This updates the checking of disallowed loads to set a distinguishable
> value before the load and explicitly check the load was a NOOP by
> reading back the final value.
>
> Signed-off-by: Robert Bragg <robert@sixbynine.org>
> ---
>  tests/gem_exec_parse.c | 20 ++++++++++++++++++--
>  1 file changed, 18 insertions(+), 2 deletions(-)
>
> diff --git a/tests/gem_exec_parse.c b/tests/gem_exec_parse.c
> index d6a2885..f241ab7 100644
> --- a/tests/gem_exec_parse.c
> +++ b/tests/gem_exec_parse.c
> @@ -305,12 +305,17 @@ static void hsw_load_register_reg(void)
>         };
>         int fd;
>         uint32_t handle;
> +       int parser_version;
> +       int bad_lrr_errno;
>
>         /* Open again to get a non-master file descriptor */
>         fd = drm_open_driver(DRIVER_INTEL);
>
> +       parser_version = command_parser_version(fd);
Ah, I was reading ahead, so move this to the fixture and re-use ?

Reviewed-by: Matthew Auld <matthew.auld@intel.com>
diff mbox

Patch

diff --git a/tests/gem_exec_parse.c b/tests/gem_exec_parse.c
index d6a2885..f241ab7 100644
--- a/tests/gem_exec_parse.c
+++ b/tests/gem_exec_parse.c
@@ -305,12 +305,17 @@  static void hsw_load_register_reg(void)
 	};
 	int fd;
 	uint32_t handle;
+	int parser_version;
+	int bad_lrr_errno;
 
 	/* Open again to get a non-master file descriptor */
 	fd = drm_open_driver(DRIVER_INTEL);
 
+	parser_version = command_parser_version(fd);
+	bad_lrr_errno = parser_version >= 8 ? 0 : -EINVAL;
+
 	igt_require(IS_HASWELL(intel_get_drm_devid(fd)));
-	igt_require(command_parser_version(fd) >= 7);
+	igt_require(parser_version >= 7);
 
 	handle = gem_create(fd, 4096);
 
@@ -335,10 +340,21 @@  static void hsw_load_register_reg(void)
 	}
 
 	for (int i = 0 ; i < ARRAY_LEN(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);
 		do_lrr[1] = disallowed_regs[i];
 		exec_batch(fd, handle, do_lrr, sizeof(do_lrr),
 			   I915_EXEC_RENDER,
-			   -EINVAL);
+			   bad_lrr_errno);
+		exec_batch_patched(fd, handle,
+				   store_gpr0, sizeof(store_gpr0),
+				   2 * sizeof(uint32_t), /* reloc */
+				   0xabcdabc0);
 	}
 
 	close(fd);