[Intel-gfx] [PATCH v2] igt/gem_workarounds: rework igt to test workaround registers
Arun Siluvery
arun.siluvery at linux.intel.com
Tue Sep 2 11:18:20 CEST 2014
kernel patch that exports w/a data to debugfs is reworked so
update igt accordingly.
Address review comments from Damien.
- if kernel is not exposing w/a data instead of failing just skip instead.
- if the platform is not exposing w/a table then no of workarounds
applied are 0, use this data to skip platform checks.
Signed-off-by: Arun Siluvery <arun.siluvery at linux.intel.com>
---
tests/gem_workarounds.c | 45 +++++++++++++++++++++++----------------------
1 file changed, 23 insertions(+), 22 deletions(-)
diff --git a/tests/gem_workarounds.c b/tests/gem_workarounds.c
index 32156d2..18ded9a 100644
--- a/tests/gem_workarounds.c
+++ b/tests/gem_workarounds.c
@@ -62,7 +62,7 @@ int drm_fd;
uint32_t devid;
static drm_intel_bufmgr *bufmgr;
struct intel_batchbuffer *batch;
-int num_wa_regs;
+int num_wa_regs = 0;
struct intel_wa_reg *wa_regs;
@@ -152,8 +152,7 @@ static void check_workarounds(enum operation op, int num)
igt_info("Address\tbefore\t\tafter\t\tw/a mask\tresult\n");
for (i = 0; i < num; ++i) {
- status = (current_wa[i].value & current_wa[i].mask) !=
- (wa_regs[i].value & wa_regs[i].mask);
+ status = (current_wa[i].value & wa_regs[i].mask) != wa_regs[i].value;
if (status)
++fail_count;
@@ -171,21 +170,15 @@ out:
igt_main
{
igt_fixture {
- int i;
int fd;
int ret;
FILE *file;
char *line = NULL;
size_t line_size;
- drm_fd = drm_open_any();
-
- bufmgr = drm_intel_bufmgr_gem_init(drm_fd, 4096);
- devid = intel_get_drm_devid(drm_fd);
- batch = intel_batchbuffer_alloc(bufmgr, devid);
-
fd = igt_debugfs_open("i915_wa_registers", O_RDONLY);
- igt_assert(fd >= 0);
+ if (fd < 0)
+ igt_skip_on("No Workaround table available !!\n");
file = fdopen(fd, "r");
igt_assert(file > 0);
@@ -193,32 +186,40 @@ igt_main
ret = getline(&line, &line_size, file);
igt_assert(ret > 0);
sscanf(line, "Workarounds applied: %d", &num_wa_regs);
- igt_assert(num_wa_regs > 0);
- wa_regs = malloc(num_wa_regs * sizeof(*wa_regs));
+ if (num_wa_regs) {
+ int i = 0;
- i = 0;
- while(getline(&line, &line_size, file) > 0) {
- sscanf(line, "0x%X: 0x%08X, mask: 0x%08X",
- &wa_regs[i].addr, &wa_regs[i].value,
- &wa_regs[i].mask);
- ++i;
- }
+ wa_regs = malloc(num_wa_regs * sizeof(*wa_regs));
+ while (getline(&line, &line_size, file) > 0) {
+ sscanf(line, "0x%X: 0x%08X, mask: 0x%08X",
+ &wa_regs[i].addr, &wa_regs[i].value,
+ &wa_regs[i].mask);
+ ++i;
+ }
+ } else
+ igt_info("No workarounds exported\n");
free(line);
fclose(file);
close(fd);
+
+ drm_fd = drm_open_any();
+
+ bufmgr = drm_intel_bufmgr_gem_init(drm_fd, 4096);
+ devid = intel_get_drm_devid(drm_fd);
+ batch = intel_batchbuffer_alloc(bufmgr, devid);
}
igt_subtest("check-workaround-data-after-reset") {
- if (IS_BROADWELL(devid))
+ if (num_wa_regs)
check_workarounds(GPU_RESET, num_wa_regs);
else
igt_skip_on("No Workaround table available!!\n");
}
igt_subtest("check-workaround-data-after-suspend-resume") {
- if (IS_BROADWELL(devid))
+ if (num_wa_regs)
check_workarounds(SUSPEND_RESUME, num_wa_regs);
else
igt_skip_on("No Workaround table available!!\n");
--
2.0.4
More information about the Intel-gfx
mailing list