summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorNicholas Kazlauskas <nicholas.kazlauskas@amd.com>2019-03-15 11:04:41 -0400
committerHarry Wentland <harry.wentland@amd.com>2019-03-27 11:17:54 -0400
commit66abe6748004ff7a6e46e08d96c36be31889d063 (patch)
tree9f31d7864deb52dba233a038a11ab9c0ec49d1f2 /lib
parentf1894f3239f417bfade0bb2bcdefc5e43701c5ec (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.c10
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);
}
/**