mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-11 18:06:13 +00:00
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>
This commit is contained in:
parent
39e44dfa4c
commit
d8d1eab318
23
lib/igt_gt.c
23
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)
|
* This is useful to exercise slow running code (such as aperture placement)
|
||||||
* which needs to be robust against a GPU reset.
|
* which needs to be robust against a GPU reset.
|
||||||
*
|
*
|
||||||
* In tests with subtests this function can be called outside of failure
|
* This function automatically skips when test requirements aren't met using
|
||||||
* catching code blocks like #igt_fixture or #igt_subtest.
|
* igt_skip().
|
||||||
*/
|
*/
|
||||||
int igt_fork_hang_helper(void)
|
void igt_fork_hang_helper(void)
|
||||||
{
|
{
|
||||||
int fd, gen;
|
int fd, gen;
|
||||||
|
|
||||||
if (igt_only_list_subtests())
|
|
||||||
return 1;
|
|
||||||
|
|
||||||
fd = drm_open_driver(DRIVER_INTEL);
|
fd = drm_open_driver(DRIVER_INTEL);
|
||||||
if (fd == -1)
|
|
||||||
return 0;
|
|
||||||
|
|
||||||
gen = intel_gen(intel_get_drm_devid(fd));
|
gen = intel_gen(intel_get_drm_devid(fd));
|
||||||
if (gen < 5) {
|
igt_skip_on(gen < 5);
|
||||||
close(fd);
|
|
||||||
return 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
igt_fork_helper(&hang_helper)
|
igt_fork_helper(&hang_helper)
|
||||||
hang_helper_process(getppid(), fd);
|
hang_helper_process(getppid(), fd);
|
||||||
|
|
||||||
close(fd);
|
close(fd);
|
||||||
return 1;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@ -227,10 +218,8 @@ int igt_fork_hang_helper(void)
|
|||||||
*/
|
*/
|
||||||
void igt_stop_hang_helper(void)
|
void igt_stop_hang_helper(void)
|
||||||
{
|
{
|
||||||
if (igt_only_list_subtests())
|
if (hang_helper.running)
|
||||||
return;
|
igt_stop_helper(&hang_helper);
|
||||||
|
|
||||||
igt_stop_helper(&hang_helper);
|
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -36,7 +36,7 @@ typedef struct igt_hang_ring {
|
|||||||
struct igt_hang_ring igt_hang_ring(int fd, int ring);
|
struct igt_hang_ring igt_hang_ring(int fd, int ring);
|
||||||
void igt_post_hang_ring(int fd, struct igt_hang_ring arg);
|
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);
|
void igt_stop_hang_helper(void);
|
||||||
|
|
||||||
int igt_open_forcewake_handle(void);
|
int igt_open_forcewake_handle(void);
|
||||||
|
@ -220,22 +220,22 @@ igt_main
|
|||||||
major_evictions(fd, size, count);
|
major_evictions(fd, size, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (igt_fork_hang_helper()) {
|
igt_subtest("minor-hang") {
|
||||||
igt_subtest("minor-hang") {
|
igt_fork_hang_helper();
|
||||||
size = 1024 * 1024;
|
size = 1024 * 1024;
|
||||||
count = 3*gem_aperture_size(fd) / size / 4;
|
count = 3*gem_aperture_size(fd) / size / 4;
|
||||||
minor_evictions(fd, size, count);
|
minor_evictions(fd, size, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
igt_subtest("major-hang") {
|
igt_subtest("major-hang") {
|
||||||
size = 3*gem_aperture_size(fd) / 4;
|
size = 3*gem_aperture_size(fd) / 4;
|
||||||
count = 4;
|
count = 4;
|
||||||
major_evictions(fd, size, count);
|
major_evictions(fd, size, count);
|
||||||
}
|
|
||||||
igt_stop_hang_helper();
|
|
||||||
}
|
}
|
||||||
igt_stop_signal_helper();
|
igt_stop_signal_helper();
|
||||||
|
|
||||||
igt_fixture
|
igt_fixture {
|
||||||
|
igt_stop_hang_helper();
|
||||||
close(fd);
|
close(fd);
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -243,32 +243,32 @@ igt_main
|
|||||||
test_major_evictions(fd, size, count);
|
test_major_evictions(fd, size, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (igt_fork_hang_helper()) {
|
igt_fixture {
|
||||||
igt_fixture {
|
igt_fork_hang_helper();
|
||||||
size = 1024 * 1024;
|
|
||||||
count = 3*gem_aperture_size(fd) / size / 4;
|
|
||||||
}
|
|
||||||
|
|
||||||
igt_subtest("mlocked-hang")
|
size = 1024 * 1024;
|
||||||
test_mlocked_evictions(fd, size, count);
|
count = 3*gem_aperture_size(fd) / size / 4;
|
||||||
|
|
||||||
igt_subtest("swapping-hang")
|
|
||||||
test_swapping_evictions(fd, size, count);
|
|
||||||
|
|
||||||
igt_subtest("minor-hang")
|
|
||||||
test_minor_evictions(fd, size, count);
|
|
||||||
|
|
||||||
igt_subtest("major-hang") {
|
|
||||||
size = 3*gem_aperture_size(fd) / 4;
|
|
||||||
count = 4;
|
|
||||||
test_major_evictions(fd, size, count);
|
|
||||||
}
|
|
||||||
|
|
||||||
igt_stop_hang_helper();
|
|
||||||
}
|
}
|
||||||
igt_stop_signal_helper();
|
|
||||||
|
igt_subtest("mlocked-hang")
|
||||||
|
test_mlocked_evictions(fd, size, count);
|
||||||
|
|
||||||
|
igt_subtest("swapping-hang")
|
||||||
|
test_swapping_evictions(fd, size, count);
|
||||||
|
|
||||||
|
igt_subtest("minor-hang")
|
||||||
|
test_minor_evictions(fd, size, count);
|
||||||
|
|
||||||
|
igt_subtest("major-hang") {
|
||||||
|
size = 3*gem_aperture_size(fd) / 4;
|
||||||
|
count = 4;
|
||||||
|
test_major_evictions(fd, size, count);
|
||||||
|
}
|
||||||
|
|
||||||
|
igt_stop_hang_helper();
|
||||||
|
|
||||||
igt_fixture {
|
igt_fixture {
|
||||||
|
igt_stop_signal_helper();
|
||||||
close(fd);
|
close(fd);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user