diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-12-03 07:45:34 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2015-12-04 16:33:58 +0100 |
commit | d8d1eab318f2f22c9199dcefc2b7b96ba4793cdc (patch) | |
tree | 3f5805ff5bb77a90d6a4b6632201d463126485a1 /lib | |
parent | 39e44dfa4c0ba2f979dab5ea81074343de0ad2cb (diff) |
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 <daniel.vetter@intel.com>
Diffstat (limited to 'lib')
-rw-r--r-- | lib/igt_gt.c | 23 | ||||
-rw-r--r-- | lib/igt_gt.h | 2 |
2 files changed, 7 insertions, 18 deletions
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); |