[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