From d8d1eab318f2f22c9199dcefc2b7b96ba4793cdc Mon Sep 17 00:00:00 2001 From: Daniel Vetter Date: Thu, 3 Dec 2015 07:45:34 +0100 Subject: lib: igt_fork_hang_helper must be run in fixtures Because it opens an intel-specific drm fd. Fixes crashes when running igt on no-intel. Signed-off-by: Daniel Vetter --- lib/igt_gt.c | 23 ++++++----------------- lib/igt_gt.h | 2 +- 2 files changed, 7 insertions(+), 18 deletions(-) (limited to 'lib') diff --git a/lib/igt_gt.c b/lib/igt_gt.c index 69cf3654..688ea5e6 100644 --- a/lib/igt_gt.c +++ b/lib/igt_gt.c @@ -190,31 +190,22 @@ hang_helper_process(pid_t pid, int fd) * This is useful to exercise slow running code (such as aperture placement) * which needs to be robust against a GPU reset. * - * In tests with subtests this function can be called outside of failure - * catching code blocks like #igt_fixture or #igt_subtest. + * This function automatically skips when test requirements aren't met using + * igt_skip(). */ -int igt_fork_hang_helper(void) +void igt_fork_hang_helper(void) { int fd, gen; - if (igt_only_list_subtests()) - return 1; - fd = drm_open_driver(DRIVER_INTEL); - if (fd == -1) - return 0; gen = intel_gen(intel_get_drm_devid(fd)); - if (gen < 5) { - close(fd); - return 0; - } + igt_skip_on(gen < 5); igt_fork_helper(&hang_helper) hang_helper_process(getppid(), fd); close(fd); - return 1; } /** @@ -227,10 +218,8 @@ int igt_fork_hang_helper(void) */ void igt_stop_hang_helper(void) { - if (igt_only_list_subtests()) - return; - - igt_stop_helper(&hang_helper); + if (hang_helper.running) + igt_stop_helper(&hang_helper); } /** diff --git a/lib/igt_gt.h b/lib/igt_gt.h index 51054233..b70bbd15 100644 --- a/lib/igt_gt.h +++ b/lib/igt_gt.h @@ -36,7 +36,7 @@ typedef struct igt_hang_ring { struct igt_hang_ring igt_hang_ring(int fd, int ring); void igt_post_hang_ring(int fd, struct igt_hang_ring arg); -int igt_fork_hang_helper(void); +void igt_fork_hang_helper(void); void igt_stop_hang_helper(void); int igt_open_forcewake_handle(void); -- cgit v1.2.3