summaryrefslogtreecommitdiff
path: root/overlay/debugfs.c
diff options
context:
space:
mode:
authorChris Wilson <chris@chris-wilson.co.uk>2013-08-23 15:51:21 +0100
committerChris Wilson <chris@chris-wilson.co.uk>2013-08-23 15:53:01 +0100
commit9574cb1a3de0dfe45c59420e2cb9a74fc23baecc (patch)
treeaa474dcec21c0f00196394e6d78a4e97bd9bce06 /overlay/debugfs.c
parentfd88db77cccf5d8d9be133dfcb3cdc3ff3f219f3 (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.c25
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;
}