[igt-dev] [PATCH i-g-t v2] lib/igt_debugfs: explicitly wait for first crc in igt_pipe_crc_start

Maarten Lankhorst maarten.lankhorst at linux.intel.com
Mon Aug 13 13:38:04 UTC 2018


Op 13-08-18 om 14:58 schreef Mahesh Kumar:
> Now crc framework does not wait for first CRC during open, User need
> to wait for crc if he wants so.
> This patch make changes in igt_pipe_crc_start to make sure we wait
> until first crc available after open to keep the tests behaviour same.
> Without this if driver is skipping few initial crcs there will be
> mismatch in expected and actual number of crcs returned by crc
> framework.
>
> Changes Since V1:
>  - poll instead of read_one_crc (Maarten)
>
> Signed-off-by: Mahesh Kumar <mahesh1.kumar at intel.com>
> ---
>  lib/igt_debugfs.c | 13 +++++++++++--
>  1 file changed, 11 insertions(+), 2 deletions(-)
>
> diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
> index f3196f43..c2b438b6 100644
> --- a/lib/igt_debugfs.c
> +++ b/lib/igt_debugfs.c
> @@ -35,6 +35,7 @@
>  #include <fcntl.h>
>  #include <unistd.h>
>  #include <i915_drm.h>
> +#include <poll.h>
>  
>  #include "drmtest.h"
>  #include "igt_aux.h"
> @@ -748,7 +749,9 @@ static void read_one_crc(igt_pipe_crc_t *pipe_crc, igt_crc_t *out)
>  void igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc)
>  {
>  	const char *src = pipe_crc_source_name(pipe_crc->source);
> +	struct pollfd pfd;
>  	char buf[32];
> +	int ret;
>  
>  	/* Stop first just to make sure we don't have lingering state left. */
>  	igt_pipe_crc_stop(pipe_crc);
> @@ -757,11 +760,17 @@ void igt_pipe_crc_start(igt_pipe_crc_t *pipe_crc)
>  
>  	sprintf(buf, "crtc-%d/crc/data", pipe_crc->pipe);
>  
> -	igt_set_timeout(10, "Opening crc fd, which waits for first CRC.");
> +	igt_set_timeout(10, "Opening crc fd, and poll for first CRC.");
>  	pipe_crc->crc_fd = openat(pipe_crc->dir, buf, pipe_crc->flags);
> +	igt_assert(pipe_crc->crc_fd != -1);
> +
> +	pfd.fd = pipe_crc->crc_fd;
> +	pfd.events = POLLIN;
> +	ret = poll(&pfd, 1, 10000);
Set timeout to -1? We already use igt_set_timeout
> +	igt_assert(ret > 0);
> +
>  	igt_reset_timeout();
>  
> -	igt_assert(pipe_crc->crc_fd != -1);
>  	errno = 0;
>  }
>  




More information about the igt-dev mailing list