[igt-dev] [PATCH i-g-t 02/23] i915/perf: Fix OA short_reads test
Lionel Landwerlin
lionel.g.landwerlin at intel.com
Tue Sep 6 12:50:33 UTC 2022
On 23/08/2022 21:30, Umesh Nerlige Ramappa wrote:
> 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);
>
More information about the igt-dev
mailing list