summaryrefslogtreecommitdiff
path: root/tests/drv_missed_irq.c
diff options
context:
space:
mode:
Diffstat (limited to 'tests/drv_missed_irq.c')
-rw-r--r--tests/drv_missed_irq.c35
1 files changed, 18 insertions, 17 deletions
diff --git a/tests/drv_missed_irq.c b/tests/drv_missed_irq.c
index 7283a17b..652cbc20 100644
--- a/tests/drv_missed_irq.c
+++ b/tests/drv_missed_irq.c
@@ -29,6 +29,8 @@
IGT_TEST_DESCRIPTION("Inject missed interrupts and make sure they are caught");
+static int drm_fd;
+
static void trigger_missed_interrupt(int fd, unsigned ring)
{
const int gen = intel_gen(intel_get_drm_devid(fd));
@@ -116,16 +118,16 @@ static uint32_t engine_mask(void)
uint32_t mask;
FILE *file;
- file = igt_debugfs_fopen("i915_ring_test_irq", "w");
+ file = igt_debugfs_fopen(drm_fd, "i915_ring_test_irq", "w");
fprintf(file, "0x%x", -1);
fclose(file);
mask = -1;
- file = igt_debugfs_fopen("i915_ring_test_irq", "r");
+ file = igt_debugfs_fopen(drm_fd, "i915_ring_test_irq", "r");
igt_ignore_warn(fscanf(file, "%x", &mask));
fclose(file);
- file = igt_debugfs_fopen("i915_ring_test_irq", "w");
+ file = igt_debugfs_fopen(drm_fd, "i915_ring_test_irq", "w");
fprintf(file, "0");
fclose(file);
@@ -136,7 +138,7 @@ static void enable_missed_irq(void)
{
FILE *file;
- file = igt_debugfs_fopen("i915_ring_test_irq", "w");
+ file = igt_debugfs_fopen(drm_fd, "i915_ring_test_irq", "w");
fprintf(file, "0x%x", -1);
fclose(file);
}
@@ -146,11 +148,11 @@ static uint32_t disable_missed_irq(void)
FILE *file;
uint32_t mask = 0;
- file = igt_debugfs_fopen("i915_ring_test_irq", "r");
+ file = igt_debugfs_fopen(drm_fd, "i915_ring_test_irq", "r");
igt_ignore_warn(fscanf(file, "%x", &mask));
fclose(file);
- file = igt_debugfs_fopen("i915_ring_test_irq", "w");
+ file = igt_debugfs_fopen(drm_fd, "i915_ring_test_irq", "w");
fprintf(file, "0");
fclose(file);
@@ -163,20 +165,19 @@ igt_simple_main
unsigned expect_rings;
unsigned missed_rings;
unsigned check_rings;
- int fd;
igt_skip_on_simulation();
bind_to_cpu(0);
- fd = drm_open_driver(DRIVER_INTEL);
- igt_require_gem(fd);
- gem_require_mmap_wc(fd);
- igt_fork_hang_detector(fd);
+ drm_fd = drm_open_driver(DRIVER_INTEL);
+ igt_require_gem(drm_fd);
+ gem_require_mmap_wc(drm_fd);
+ igt_fork_hang_detector(drm_fd);
expect_rings = engine_mask();
igt_debug("Clearing rings %x\n", expect_rings);
- intel_detect_and_clear_missed_interrupts(fd);
+ intel_detect_and_clear_missed_interrupts(drm_fd);
for (e = intel_execution_engines; e->name; e++) {
if (expect_rings == -1 && e->exec_id)
continue;
@@ -186,9 +187,9 @@ igt_simple_main
igt_debug("Clearing ring %s [%x]\n",
e->name, e->exec_id | e->flags);
- trigger_missed_interrupt(fd, e->exec_id | e->flags);
+ trigger_missed_interrupt(drm_fd, e->exec_id | e->flags);
}
- igt_assert_eq(intel_detect_and_clear_missed_interrupts(fd), 0);
+ igt_assert_eq(intel_detect_and_clear_missed_interrupts(drm_fd), 0);
igt_debug("Testing rings %x\n", expect_rings);
enable_missed_irq();
@@ -201,9 +202,9 @@ igt_simple_main
igt_debug("Executing on ring %s [%x]\n",
e->name, e->exec_id | e->flags);
- trigger_missed_interrupt(fd, e->exec_id | e->flags);
+ trigger_missed_interrupt(drm_fd, e->exec_id | e->flags);
}
- missed_rings = intel_detect_and_clear_missed_interrupts(fd);
+ missed_rings = intel_detect_and_clear_missed_interrupts(drm_fd);
check_rings = disable_missed_irq();
igt_assert_eq_u32(check_rings, expect_rings);
@@ -214,5 +215,5 @@ igt_simple_main
igt_assert_eq_u32(missed_rings, expect_rings);
igt_stop_hang_detector();
- close(fd);
+ close(drm_fd);
}