summaryrefslogtreecommitdiff
path: root/lib/igt_gt.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2017-03-24 18:11:08 +0000
committerChris Wilson <chris@chris-wilson.co.uk>2017-03-24 18:12:23 +0000
commit58de785468782f29e6eb1d32d47b55b3d234dfcf (patch)
treeea862ef365385096817e1ae7b636fab440d03e4f /lib/igt_gt.c
parent137360f75a42042198cf00d35a54cc68660d8c90 (diff)
Improve utilisation of igt_debugfs_dir()
As we can export igt_debugfs_dir() to cache the path to our debugfs directory, encourage a few more users to take advantage. Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'lib/igt_gt.c')
-rw-r--r--lib/igt_gt.c43
1 files changed, 15 insertions, 28 deletions
diff --git a/lib/igt_gt.c b/lib/igt_gt.c
index cc680862..976b0061 100644
--- a/lib/igt_gt.c
+++ b/lib/igt_gt.c
@@ -362,25 +362,16 @@ void igt_post_hang_ring(int fd, igt_hang_t arg)
*/
void igt_force_gpu_reset(int drm_fd)
{
- FILE *file;
- int fd, ret, wedged;
+ int dir, wedged;
igt_debug("Triggering GPU reset\n");
- fd = igt_debugfs_open(drm_fd, "i915_wedged", O_RDWR);
- igt_require(fd >= 0);
-
- ret = write(fd, "-1\n", 3);
- close(fd);
-
- igt_assert_eq(ret, 3);
+ dir = igt_debugfs_dir(drm_fd);
- file = igt_debugfs_fopen(drm_fd, "i915_wedged", "r");
- igt_assert(file);
+ igt_sysfs_set(dir, "i915_wedged", "-1");
+ igt_sysfs_scanf(dir, "i915_wedged", "%d", &wedged);
- wedged = 1;
- igt_ignore_warn(fscanf(file, "%d", &wedged));
- fclose(file);
+ close(dir);
igt_assert(!wedged);
}
@@ -538,23 +529,19 @@ void igt_clflush_range(void *addr, int size)
*/
unsigned intel_detect_and_clear_missed_interrupts(int fd)
{
- unsigned missed = 0;
- FILE *file;
+ unsigned missed;
+ int dir;
gem_quiescent_gpu(fd);
- file = igt_debugfs_fopen(fd, "i915_ring_missed_irq", "r");
- if (file) {
- igt_assert(fscanf(file, "%x", &missed) == 1);
- fclose(file);
- }
- if (missed) {
- file = igt_debugfs_fopen(fd, "i915_ring_missed_irq", "w");
- if (file) {
- fwrite("0\n", 1, 2, file);
- fclose(file);
- }
- }
+ dir = igt_debugfs_dir(fd);
+
+ missed = 0;
+ igt_assert(igt_sysfs_scanf(dir, "i915_ring_missed_irq", "%x", &missed) == 1);
+ if (missed)
+ igt_sysfs_set(dir, "i915_ring_missed_irq", "0");
+
+ close(dir);
errno = 0;
return missed;