summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--lib/igt_debugfs.c11
1 files changed, 9 insertions, 2 deletions
diff --git a/lib/igt_debugfs.c b/lib/igt_debugfs.c
index f3196f43..4de6b247 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,6 +749,7 @@ 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];
/* Stop first just to make sure we don't have lingering state left. */
@@ -757,11 +759,16 @@ 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;
+ poll(&pfd, 1, -1);
+
igt_reset_timeout();
- igt_assert(pipe_crc->crc_fd != -1);
errno = 0;
}