[igt-dev] [PATCH i-g-t] tests/i915/gem_workarounds: Prepare for read mask

Tvrtko Ursulin tvrtko.ursulin at linux.intel.com
Thu Apr 29 08:41:30 UTC 2021


From: Tvrtko Ursulin <tvrtko.ursulin at intel.com>

I plan to extend i915 to expose the read mask in i915_wa_registers so
prepare the IGT for that format change.

Signed-off-by: Tvrtko Ursulin <tvrtko.ursulin at intel.com>
---
 tests/i915/gem_workarounds.c | 19 ++++++++++++++-----
 1 file changed, 14 insertions(+), 5 deletions(-)

diff --git a/tests/i915/gem_workarounds.c b/tests/i915/gem_workarounds.c
index 00b475c27ff1..be5c5d83f405 100644
--- a/tests/i915/gem_workarounds.c
+++ b/tests/i915/gem_workarounds.c
@@ -47,6 +47,7 @@ struct intel_wa_reg {
 	uint32_t addr;
 	uint32_t value;
 	uint32_t mask;
+	uint32_t read;
 };
 
 static struct write_only_list {
@@ -157,8 +158,8 @@ static int workaround_fail_count(int i915, uint32_t ctx)
 		if (out[i] == 0)
 			out[i] = *(volatile uint32_t *)(igt_global_mmio + wa_regs[i].addr);
 
-		if ((wa_regs[i].value & wa_regs[i].mask) ==
-		    (out[i] & wa_regs[i].mask)) {
+		if ((wa_regs[i].value & wa_regs[i].read) ==
+		    (out[i] & wa_regs[i].read)) {
 			igt_debug("%s\tOK\n", buf);
 		} else if (write_only(wa_regs[i].addr)) {
 			igt_debug("%s\tIGNORED (w/o)\n", buf);
@@ -274,7 +275,7 @@ igt_main
 		sscanf(str, "Workarounds applied: %d", &num_wa_regs);
 		igt_require(num_wa_regs > 0);
 
-		wa_regs = malloc(num_wa_regs * sizeof(*wa_regs));
+		wa_regs = calloc(num_wa_regs, sizeof(*wa_regs));
 		igt_assert(wa_regs);
 
 		i = 0;
@@ -283,11 +284,19 @@ igt_main
 				break;
 
 			igt_debug("%s", line);
-			if (sscanf(line, "0x%X: 0x%08X, mask: 0x%08X",
+			if (sscanf(line, "0x%X: 0x%08X, mask: 0x%08X, read: 0x%08X",
 				   &wa_regs[i].addr,
 				   &wa_regs[i].value,
-				   &wa_regs[i].mask) == 3)
+				   &wa_regs[i].mask,
+				   &wa_regs[i].read) == 4) {
 				i++;
+			} else if (sscanf(line, "0x%X: 0x%08X, mask: 0x%08X",
+				   &wa_regs[i].addr,
+				   &wa_regs[i].value,
+				   &wa_regs[i].mask) == 3) {
+				wa_regs[i].read = wa_regs[i].mask;
+				i++;
+			}
 		}
 
 		igt_assert_lte(i, num_wa_regs);
-- 
2.30.2



More information about the igt-dev mailing list