From 58cfeabb90a9bef742df53e2602966a2166e37b9 Mon Sep 17 00:00:00 2001 From: Ben Widawsky Date: Wed, 18 Jul 2012 11:47:42 -0700 Subject: [PATCH] reg_read: skip older kernels Signed-off-by: Ben Widawsky --- tests/drm_reg_read.c | 33 ++++++++++++++++++++------------- 1 file changed, 20 insertions(+), 13 deletions(-) diff --git a/tests/drm_reg_read.c b/tests/drm_reg_read.c index 360deea..9afaef3 100644 --- a/tests/drm_reg_read.c +++ b/tests/drm_reg_read.c @@ -50,34 +50,41 @@ static void handle_bad(int ret, int lerrno, int expected, const char *desc) } } -int main(int argc, char *argv[]) +static uint64_t timer_query(int fd) { struct local_drm_i915_reg_read read; - int ret, fd; - __u64 val; + int ret; read.offset = 0x2358; - - fd = drm_open_any(); - ret = drmIoctl(fd, REG_READ_IOCTL, &read); if (ret) { - perror("positive test case failed\n"); + perror("positive test case failed: "); exit(EXIT_FAILURE); } - val = read.val; + + return read.val; +} + +int main(int argc, char *argv[]) +{ + struct local_drm_i915_reg_read read; + int ret, fd; + uint64_t val; + + fd = drm_open_any(); + ret = drmIoctl(fd, REG_READ_IOCTL, &read); - if (ret) { - perror("positive test case 2 failed\n"); + if (ret == EINVAL) + exit(77); + else if (ret) exit(EXIT_FAILURE); - } - if (val == read.val) { + val = timer_query(fd); + if (timer_query(fd) == val) { fprintf(stderr, "Timer isn't moving, probably busted\n"); exit(EXIT_FAILURE); } - /* bad reg */ read.offset = 0x12345678; ret = drmIoctl(fd, REG_READ_IOCTL, &read); -- 2.7.4