diff options
author | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2017-07-20 16:10:23 +0200 |
---|---|---|
committer | Maarten Lankhorst <maarten.lankhorst@linux.intel.com> | 2017-07-24 08:40:55 +0200 |
commit | 436f93d7e6e3eb68fb6738ad5715ffe66c87a72c (patch) | |
tree | 1d4dc88cbd6d43aaea77c4393a147a2d5122594d /tests | |
parent | f8d6afa67a7e863006361e1dfde0c6d1d8cb1dda (diff) |
tests/debugfs_test: Fix testcases to pass
emon_crash should skip if the debugfs file could not be opened the first
time, and debugfs_test.read_all_entries should skip files that could not
be opened, instead of returning an error.
This is because in a typical IGT run there may be more debugfs files
registered than can be opened.
This is an example on f2-pnv-d510:
$ grep -r . /sys/kernel/debug/dri/0 >/dev/null
grep: /sys/kernel/debug/dri/0/i915_sseu_status: No such device
grep: /sys/kernel/debug/dri/0/i915_energy_uJ: No such device
grep: /sys/kernel/debug/dri/0/i915_sink_crc_eDP1: No such device
grep: /sys/kernel/debug/dri/0/i915_emon_status: No such device
grep: /sys/kernel/debug/dri/0/i915_guc_log_control: Invalid argument
grep: /sys/kernel/debug/dri/0/i915_fbc_false_color: No such device
grep: /sys/kernel/debug/dri/0/i915_cur_wm_latency: No such device
grep: /sys/kernel/debug/dri/0/i915_spr_wm_latency: No such device
grep: /sys/kernel/debug/dri/0/i915_pri_wm_latency: No such device
grep: /sys/kernel/debug/dri/0/i915_next_seqno: Permission denied
grep: /sys/kernel/debug/dri/0/i915_cache_sharing: No such device
grep: /sys/kernel/debug/dri/0/i915_min_freq: No such device
grep: /sys/kernel/debug/dri/0/i915_max_freq: No such device
grep: /sys/kernel/debug/dri/0/i915_pipe_C_crc: No such device
grep: /sys/kernel/debug/dri/0/i915_forcewake_user: Invalid argument
grep: /sys/kernel/debug/dri/0/crtc-1/crc/data: Input/output error
Signed-off-by: Maarten Lankhorst <maarten.lankhorst@linux.intel.com>
Cc: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
Cc: Arkadiusz Hiler <arkadiusz.hiler@intel.com>
Reviewed by: Abdiel Janulgue <abdiel.janulgue@linux.intel.com>
Diffstat (limited to 'tests')
-rw-r--r-- | tests/debugfs_test.c | 38 |
1 files changed, 24 insertions, 14 deletions
diff --git a/tests/debugfs_test.c b/tests/debugfs_test.c index 122f7dc8..1663fd41 100644 --- a/tests/debugfs_test.c +++ b/tests/debugfs_test.c @@ -29,7 +29,7 @@ #include <sys/types.h> #include <dirent.h> -static void read_and_discard_sysfs_entries(int path_fd, bool is_crc) +static void read_and_discard_sysfs_entries(int path_fd) { struct dirent *dirent; DIR *dir; @@ -47,24 +47,31 @@ static void read_and_discard_sysfs_entries(int path_fd, bool is_crc) igt_assert((sub_fd = openat(path_fd, dirent->d_name, O_RDONLY | O_DIRECTORY)) > 0); - read_and_discard_sysfs_entries(sub_fd, !strcmp(dirent->d_name, "crc")); + read_and_discard_sysfs_entries(sub_fd); close(sub_fd); } else { - char *buf; + char buf[512]; + int sub_fd; + ssize_t ret; igt_set_timeout(5, "reading sysfs entry"); - buf = igt_sysfs_get(path_fd, dirent->d_name); - igt_reset_timeout(); - /* - * /crtc-XX/crc/data may fail with -EIO if the CRTC - * is not active. - */ - if (!buf && is_crc && errno == EIO && - !strcmp(dirent->d_name, "data")) + igt_debug("Reading file \"%s\"\n", dirent->d_name); + + sub_fd = openat(path_fd, dirent->d_name, O_RDONLY); + if (sub_fd == -1) { + igt_debug("Could not open file \"%s\" with error: %m\n", dirent->d_name); continue; + } - igt_assert(buf); - free(buf); + do { + ret = read(sub_fd, buf, sizeof(buf)); + } while (ret == sizeof(buf)); + + if (ret == -1) + igt_debug("Could not read file \"%s\" with error: %m\n", dirent->d_name); + + igt_reset_timeout(); + close(sub_fd); } } closedir(dir); @@ -82,7 +89,7 @@ igt_main } igt_subtest("read_all_entries") { - read_and_discard_sysfs_entries(debugfs, false); + read_and_discard_sysfs_entries(debugfs); } igt_subtest("emon_crash") { @@ -95,6 +102,9 @@ igt_main for (i = 0; i < 1000; i++) { char *buf = igt_sysfs_get(debugfs, "i915_emon_status"); + + igt_skip_on_f(!buf && !i, "i915_emon_status could not be read\n"); + igt_assert(buf); free(buf); } |