diff options
author | Chris Wilson <chris@chris-wilson.co.uk> | 2013-08-23 15:51:21 +0100 |
---|---|---|
committer | Chris Wilson <chris@chris-wilson.co.uk> | 2013-08-23 15:53:01 +0100 |
commit | 9574cb1a3de0dfe45c59420e2cb9a74fc23baecc (patch) | |
tree | aa474dcec21c0f00196394e6d78a4e97bd9bce06 /overlay/debugfs.c | |
parent | fd88db77cccf5d8d9be133dfcb3cdc3ff3f219f3 (diff) |
overlay: Search for right debugfs path
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
Diffstat (limited to 'overlay/debugfs.c')
-rw-r--r-- | overlay/debugfs.c | 25 |
1 files changed, 23 insertions, 2 deletions
diff --git a/overlay/debugfs.c b/overlay/debugfs.c index 644f434b..ccce2279 100644 --- a/overlay/debugfs.c +++ b/overlay/debugfs.c @@ -25,15 +25,25 @@ #include <sys/stat.h> #include <sys/mount.h> #include <errno.h> +#include <stdio.h> #include "debugfs.h" +char debugfs_path[128]; + int debugfs_init(void) { + const char *path = "/sys/kernel/debug"; struct stat st; + int n; + + if (stat("/debug/dri", &st) == 0) { + path = "/debug/dri"; + goto find_minor; + } if (stat("/sys/kernel/debug/dri", &st) == 0) - return 0; + goto find_minor; if (stat("/sys/kernel/debug", &st)) return errno; @@ -41,5 +51,16 @@ int debugfs_init(void) if (mount("debug", "/sys/kernel/debug", "debugfs", 0, 0)) return errno; - return 0; +find_minor: + for (n = 0; n < 16; n++) { + int len = sprintf(debugfs_path, "%s/dri/%d", path, n); + sprintf(debugfs_path + len, "/i915_error_state"); + if (stat(debugfs_path, &st) == 0) { + debugfs_path[len] = '\0'; + return 0; + } + } + + debugfs_path[0] = '\0'; + return ENOENT; } |