summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorDaniel Vetter <daniel.vetter@ffwll.ch>2015-12-03 07:45:34 +0100
committerDaniel Vetter <daniel.vetter@ffwll.ch>2015-12-04 16:33:58 +0100
commitd8d1eab318f2f22c9199dcefc2b7b96ba4793cdc (patch)
tree3f5805ff5bb77a90d6a4b6632201d463126485a1 /lib
parent39e44dfa4c0ba2f979dab5ea81074343de0ad2cb (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.c23
-rw-r--r--lib/igt_gt.h2
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);