diff options
author | Nicholas Kazlauskas <nicholas.kazlauskas@amd.com> | 2019-03-15 11:04:41 -0400 |
---|---|---|
committer | Harry Wentland <harry.wentland@amd.com> | 2019-03-27 11:17:54 -0400 |
commit | 66abe6748004ff7a6e46e08d96c36be31889d063 (patch) | |
tree | 9f31d7864deb52dba233a038a11ab9c0ec49d1f2 /lib | |
parent | f1894f3239f417bfade0bb2bcdefc5e43701c5ec (diff) |
lib/debugfs: Don't do CRC sanity checks on amdgpu
A black FB on amdgpu returns a CRC of (0, 0, 0), which IGT considers
suspicious. All our CRC values are also 16-bit so a value of 0xffffffff
can't be obtained.
Drop the suspicious CRC checks on amdgpu by checking the device in
crc_sanity_checks. We need the drm_fd for this so pass in pipe_crc
to the function to get it. It makes more sense to me to do it this
way than to duplicate code and the explanation on both calls to
crc_sanity_checks.
v2: rebase
Cc: Leo Li <sunpeng.li@amd.com>
Cc: Harry Wentland <harry.wentland@amd.com>
Signed-off-by: Nicholas Kazlauskas <nicholas.kazlauskas@amd.com>
Reviewed-by: Harry Wentland <harry.wentland@amd.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/igt_debugfs.c | 10 |
1 files changed, 7 insertions, 3 deletions
diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c index 7849faad..dd229c09 100644 --- a/lib/igt_debugfs.c +++ b/lib/igt_debugfs.c @@ -872,11 +872,15 @@ igt_pipe_crc_get_crcs(igt_pipe_crc_t *pipe_crc, int n_crcs, return n; } -static void crc_sanity_checks(igt_crc_t *crc) +static void crc_sanity_checks(igt_pipe_crc_t *pipe_crc, igt_crc_t *crc) { int i; bool all_zero = true; + /* Any CRC value can be considered valid on amdgpu hardware. */ + if (is_amdgpu_device(pipe_crc->fd)) + return; + for (i = 0; i < crc->n_words; i++) { igt_warn_on_f(crc->crc[i] == 0xffffffff, "Suspicious CRC: it looks like the CRC " @@ -930,7 +934,7 @@ void igt_pipe_crc_get_single(igt_pipe_crc_t *pipe_crc, igt_crc_t *crc) { read_one_crc(pipe_crc, crc); - crc_sanity_checks(crc); + crc_sanity_checks(pipe_crc, crc); } /** @@ -959,7 +963,7 @@ igt_pipe_crc_get_current(int drm_fd, igt_pipe_crc_t *pipe_crc, igt_crc_t *crc) } } while (igt_vblank_before_eq(crc->frame, vblank)); - crc_sanity_checks(crc); + crc_sanity_checks(pipe_crc, crc); } /** |