diff options
author | José Roberto de Souza <jose.souza@intel.com> | 2020-05-27 17:52:57 -0700 |
---|---|---|
committer | José Roberto de Souza <jose.souza@intel.com> | 2020-06-02 10:10:53 -0700 |
commit | 82ef7157c5600514d6746d6e5aebf13935b0fbfb (patch) | |
tree | bdf8b7a3d313ce9a3cedc55960c983b7d3a154df /lib | |
parent | bea881189520a9cccbb1c1cb454ac5b6fdaea40e (diff) |
tests/kms_psr2_su: Read su blocks of frame 1 if frame 0 is 0
Not sure why but in recent kernels + IGT when PSR status debugfs is
read the frame already passed, so the su blocks is set in frame 1
and causing the test to fail for page flips.
So here reading from frame 1 if frame 0 has 0 blocks, as this test
always changes screen with the same number of su blocks it is not a
issue.
Closes: https://gitlab.freedesktop.org/drm/intel/-/issues/608
Cc: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Reviewed-by: Gwan-gyeong Mun <gwan-gyeong.mun@intel.com>
Signed-off-by: José Roberto de Souza <jose.souza@intel.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/igt_psr.c | 10 |
1 files changed, 9 insertions, 1 deletions
diff --git a/lib/igt_psr.c b/lib/igt_psr.c index 4109b5295..956f6219c 100644 --- a/lib/igt_psr.c +++ b/lib/igt_psr.c @@ -195,11 +195,12 @@ bool psr_sink_support(int device, int debugfs_fd, enum psr_mode mode) #define PSR2_SU_BLOCK_STR_LOOKUP "PSR2 SU blocks:\n0\t" +/* Return the the last or last but one su blocks */ static bool psr2_read_last_num_su_blocks_val(int debugfs_fd, uint16_t *num_su_blocks) { char buf[PSR_STATUS_MAX_LEN]; - char *str; + char *str, *str2; int ret; ret = igt_debugfs_simple_read(debugfs_fd, "i915_edp_psr_status", buf, @@ -212,6 +213,13 @@ psr2_read_last_num_su_blocks_val(int debugfs_fd, uint16_t *num_su_blocks) return false; str = &str[strlen(PSR2_SU_BLOCK_STR_LOOKUP)]; + *num_su_blocks = (uint16_t)strtol(str, &str2, 10); + if (*num_su_blocks != 0) + return true; + + str = str2; + /* Jump '\n''1''\t' */ + str += 3; *num_su_blocks = (uint16_t)strtol(str, NULL, 10); return true; |