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@xxxxxxxxxxxxxxx> --- 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 _______________________________________________ Intel-gfx mailing list Intel-gfx@xxxxxxxxxxxxxxxxxxxxx http://lists.freedesktop.org/mailman/listinfo/intel-gfx