mirror of
https://github.com/tiagovignatti/intel-gpu-tools.git
synced 2025-06-08 16:36:14 +00:00
overlay: Search for right debugfs path
Signed-off-by: Chris Wilson <chris@chris-wilson.co.uk>
This commit is contained in:
parent
fd88db77cc
commit
9574cb1a3d
@ -25,15 +25,25 @@
|
|||||||
#include <sys/stat.h>
|
#include <sys/stat.h>
|
||||||
#include <sys/mount.h>
|
#include <sys/mount.h>
|
||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "debugfs.h"
|
#include "debugfs.h"
|
||||||
|
|
||||||
|
char debugfs_path[128];
|
||||||
|
|
||||||
int debugfs_init(void)
|
int debugfs_init(void)
|
||||||
{
|
{
|
||||||
|
const char *path = "/sys/kernel/debug";
|
||||||
struct stat st;
|
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)
|
if (stat("/sys/kernel/debug/dri", &st) == 0)
|
||||||
return 0;
|
goto find_minor;
|
||||||
|
|
||||||
if (stat("/sys/kernel/debug", &st))
|
if (stat("/sys/kernel/debug", &st))
|
||||||
return errno;
|
return errno;
|
||||||
@ -41,5 +51,16 @@ int debugfs_init(void)
|
|||||||
if (mount("debug", "/sys/kernel/debug", "debugfs", 0, 0))
|
if (mount("debug", "/sys/kernel/debug", "debugfs", 0, 0))
|
||||||
return errno;
|
return errno;
|
||||||
|
|
||||||
|
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;
|
return 0;
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
debugfs_path[0] = '\0';
|
||||||
|
return ENOENT;
|
||||||
|
}
|
||||||
|
@ -25,6 +25,7 @@
|
|||||||
#ifndef DEBUGFS_H
|
#ifndef DEBUGFS_H
|
||||||
#define DEBUGFS_H
|
#define DEBUGFS_H
|
||||||
|
|
||||||
|
extern char debugfs_path[128];
|
||||||
int debugfs_init(void);
|
int debugfs_init(void);
|
||||||
|
|
||||||
#endif /* DEBUGFS_H */
|
#endif /* DEBUGFS_H */
|
||||||
|
@ -30,6 +30,7 @@
|
|||||||
#include <string.h>
|
#include <string.h>
|
||||||
|
|
||||||
#include "gem-objects.h"
|
#include "gem-objects.h"
|
||||||
|
#include "debugfs.h"
|
||||||
|
|
||||||
/* /sys/kernel/debug/dri/0/i915_gem_objects:
|
/* /sys/kernel/debug/dri/0/i915_gem_objects:
|
||||||
* 46 objects, 20107264 bytes
|
* 46 objects, 20107264 bytes
|
||||||
@ -52,7 +53,8 @@ int gem_objects_init(struct gem_objects *obj)
|
|||||||
|
|
||||||
memset(obj, 0, sizeof(*obj));
|
memset(obj, 0, sizeof(*obj));
|
||||||
|
|
||||||
fd = open("/sys/kernel/debug/dri/0/i915_gem_objects", 0);
|
sprintf(buf, "%s/i915_gem_objects", debugfs_path);
|
||||||
|
fd = open(buf, 0);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return errno;
|
return errno;
|
||||||
len = read(fd, buf, sizeof(buf)-1);
|
len = read(fd, buf, sizeof(buf)-1);
|
||||||
@ -97,7 +99,8 @@ int gem_objects_update(struct gem_objects *obj)
|
|||||||
freed = obj->comm;
|
freed = obj->comm;
|
||||||
obj->comm = NULL;
|
obj->comm = NULL;
|
||||||
|
|
||||||
fd = open("/sys/kernel/debug/dri/0/i915_gem_objects", 0);
|
sprintf(buf, "%s/i915_gem_objects", debugfs_path);
|
||||||
|
fd = open(buf, 0);
|
||||||
if (fd < 0) {
|
if (fd < 0) {
|
||||||
ret = errno;
|
ret = errno;
|
||||||
goto done;
|
goto done;
|
||||||
|
@ -29,6 +29,7 @@
|
|||||||
#include <stdio.h>
|
#include <stdio.h>
|
||||||
|
|
||||||
#include "gpu-freq.h"
|
#include "gpu-freq.h"
|
||||||
|
#include "debugfs.h"
|
||||||
|
|
||||||
int gpu_freq_init(struct gpu_freq *gf)
|
int gpu_freq_init(struct gpu_freq *gf)
|
||||||
{
|
{
|
||||||
@ -37,7 +38,8 @@ int gpu_freq_init(struct gpu_freq *gf)
|
|||||||
|
|
||||||
memset(gf, 0, sizeof(*gf));
|
memset(gf, 0, sizeof(*gf));
|
||||||
|
|
||||||
fd = open("/sys/kernel/debug/dri/0/i915_cur_delayinfo", 0);
|
sprintf(buf, "%s/i915_cur_delayinfo", debugfs_path);
|
||||||
|
fd = open(buf, 0);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return gf->error = errno;
|
return gf->error = errno;
|
||||||
|
|
||||||
@ -83,7 +85,8 @@ int gpu_freq_update(struct gpu_freq *gf)
|
|||||||
if (gf->error)
|
if (gf->error)
|
||||||
return gf->error;
|
return gf->error;
|
||||||
|
|
||||||
fd = open("/sys/kernel/debug/dri/0/i915_cur_delayinfo", 0);
|
sprintf(buf, "%s/i915_cur_delayinfo", debugfs_path);
|
||||||
|
fd = open(buf, 0);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return gf->error = errno;
|
return gf->error = errno;
|
||||||
|
|
||||||
|
@ -36,6 +36,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "gpu-perf.h"
|
#include "gpu-perf.h"
|
||||||
|
#include "debugfs.h"
|
||||||
|
|
||||||
#if defined(__i386__)
|
#if defined(__i386__)
|
||||||
#define rmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
|
#define rmb() asm volatile("lock; addl $0,0(%%esp)" ::: "memory")
|
||||||
@ -45,7 +46,6 @@
|
|||||||
#define rmb() asm volatile("lfence" ::: "memory")
|
#define rmb() asm volatile("lfence" ::: "memory")
|
||||||
#endif
|
#endif
|
||||||
|
|
||||||
#define TRACING_EVENT_PATH "/sys/kernel/debug/tracing/events"
|
|
||||||
#define N_PAGES 32
|
#define N_PAGES 32
|
||||||
|
|
||||||
struct sample_event {
|
struct sample_event {
|
||||||
@ -85,7 +85,7 @@ static uint64_t tracepoint_id(const char *sys, const char *name)
|
|||||||
char buf[1024];
|
char buf[1024];
|
||||||
int fd, n;
|
int fd, n;
|
||||||
|
|
||||||
snprintf(buf, sizeof(buf), "%s/%s/%s/id", TRACING_EVENT_PATH, sys, name);
|
snprintf(buf, sizeof(buf), "%s/tracing/events/%s/%s/id", debugfs_path, sys, name);
|
||||||
fd = open(buf, 0);
|
fd = open(buf, 0);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
@ -31,6 +31,7 @@
|
|||||||
#include <errno.h>
|
#include <errno.h>
|
||||||
|
|
||||||
#include "power.h"
|
#include "power.h"
|
||||||
|
#include "debugfs.h"
|
||||||
|
|
||||||
/* XXX Is this exposed through RAPL? */
|
/* XXX Is this exposed through RAPL? */
|
||||||
|
|
||||||
@ -41,7 +42,8 @@ int power_init(struct power *power)
|
|||||||
|
|
||||||
memset(power, 0, sizeof(*power));
|
memset(power, 0, sizeof(*power));
|
||||||
|
|
||||||
fd = open("/sys/kernel/debug/dri/0/i915_energy_uJ", 0);
|
sprintf(buf, "%s/i915_energy_uJ", debugfs_path);
|
||||||
|
fd = open(buf, 0);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return power->error = errno;
|
return power->error = errno;
|
||||||
|
|
||||||
@ -54,12 +56,13 @@ int power_init(struct power *power)
|
|||||||
return 0;
|
return 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
static uint64_t file_to_u64(const char *path)
|
static uint64_t file_to_u64(const char *name)
|
||||||
{
|
{
|
||||||
char buf[4096];
|
char buf[4096];
|
||||||
int fd, len;
|
int fd, len;
|
||||||
|
|
||||||
fd = open(path, 0);
|
sprintf(buf, "%s/i915_energy_uJ", name);
|
||||||
|
fd = open(buf, 0);
|
||||||
if (fd < 0)
|
if (fd < 0)
|
||||||
return 0;
|
return 0;
|
||||||
|
|
||||||
@ -93,7 +96,7 @@ int power_update(struct power *power)
|
|||||||
if (power->error)
|
if (power->error)
|
||||||
return power->error;
|
return power->error;
|
||||||
|
|
||||||
s->energy = file_to_u64("/sys/kernel/debug/dri/0/i915_energy_uJ");
|
s->energy = file_to_u64("i915_energy_uJ");
|
||||||
s->timestamp = clock_ms_to_u64();
|
s->timestamp = clock_ms_to_u64();
|
||||||
if (power->count == 1)
|
if (power->count == 1)
|
||||||
return EAGAIN;
|
return EAGAIN;
|
||||||
|
Loading…
x
Reference in New Issue
Block a user