[igt-dev] [PATCH i-g-t v2 03/28] i915/perf: Fix OA short_reads test
Umesh Nerlige Ramappa
umesh.nerlige.ramappa at intel.com
Thu Oct 27 20:55:10 UTC 2022
With 5000 ns oa exponent, report lost errors can occur. A report lost
header can be read by the user even when there are no valid OA report
samples, so we get an 8 byte read. This defeats the EFAULT check.
When checking for EFAULT on a sampled report, discard any report lost
errors.
Signed-off-by: Umesh Nerlige Ramappa <umesh.nerlige.ramappa at intel.com>
Reviewed-by: Lionel Landwerlin <lionel.g.landwerlin at intel.com>
---
tests/i915/perf.c | 7 ++++++-
1 file changed, 6 insertions(+), 1 deletion(-)
diff --git a/tests/i915/perf.c b/tests/i915/perf.c
index 51e2dc87..0b8f6ac8 100644
--- a/tests/i915/perf.c
+++ b/tests/i915/perf.c
@@ -2853,8 +2853,13 @@ test_short_reads(void)
/* A read that can't return a single record because it would result
* in a fault on buffer overrun should result in an EFAULT error...
+ *
+ * Make sure to weed out all report lost errors before verifying EFAULT.
*/
- ret = read(stream_fd, pages + page_size - 16, page_size);
+ header = (void *)(pages + page_size - 16);
+ do {
+ ret = read(stream_fd, header, page_size);
+ } while (ret > 0 && header->type == DRM_I915_PERF_RECORD_OA_REPORT_LOST);
igt_assert_eq(ret, -1);
igt_assert_eq(errno, EFAULT);
--
2.25.1
More information about the igt-dev
mailing list