diff options
author | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-03-14 16:00:22 +0100 |
---|---|---|
committer | Daniel Vetter <daniel.vetter@ffwll.ch> | 2014-03-14 16:00:22 +0100 |
commit | ea18fc16cd88a31b5d390721ad103efa07e288f1 (patch) | |
tree | 6ba621b91b8759e17a9537d90a1d8ad590bad7ae /lib/intel_mmio.c | |
parent | 553d594b6efd117497791e708146588268c992a9 (diff) |
lib: extract igt_open_forcewake_handle
... and I immediately regret that I've killed the return value
for igt_debugfs_init, since we have callers which need to work
without the forcewake stuff, e.g. the reg dumper needs to work
without i915 loaded.
Put this new helper to good use in the mmio code and the pm_pc8
testcase.
Cc: Paulo Zanoni <paulo.r.zanoni@intel.com>
Signed-off-by: Daniel Vetter <daniel.vetter@ffwll.ch>
Diffstat (limited to 'lib/intel_mmio.c')
-rw-r--r-- | lib/intel_mmio.c | 52 |
1 files changed, 5 insertions, 47 deletions
diff --git a/lib/intel_mmio.c b/lib/intel_mmio.c index 930a44f8..22480098 100644 --- a/lib/intel_mmio.c +++ b/lib/intel_mmio.c @@ -42,6 +42,7 @@ #include <sys/mman.h> #include "intel_gpu_tools.h" +#include "igt_debugfs.h" #define FAKEKEY 0x2468ace0 @@ -50,8 +51,6 @@ void *mmio; static struct _mmio_data { int inited; bool safe; - char debugfs_path[FILENAME_MAX]; - char debugfs_forcewake_path[FILENAME_MAX]; uint32_t i915_devid; struct intel_register_map map; int key; @@ -113,42 +112,6 @@ intel_get_mmio(struct pci_device *pci_dev) } } -/* - * If successful, i915_debugfs_path and i915_debugfs_forcewake_path are both - * updated with the correct path. - */ -static int -find_debugfs_path(const char *dri_base) -{ - char buf[FILENAME_MAX]; - struct stat sb; - int i, ret; - - for (i = 0; i < 16; i++) { - snprintf(buf, FILENAME_MAX, "%s/%i/name", dri_base, i); - - snprintf(mmio_data.debugfs_path, FILENAME_MAX, - "%s/%i/", dri_base, i); - snprintf(mmio_data.debugfs_forcewake_path, FILENAME_MAX, - "%s/%i/i915_forcewake_user", dri_base, i); - - ret = stat(mmio_data.debugfs_forcewake_path, &sb); - if (ret) { - mmio_data.debugfs_path[0] = 0; - mmio_data.debugfs_forcewake_path[0] = 0; - } else - return 0; - } - - return -1; -} - -static int -get_forcewake_lock(void) -{ - return open(mmio_data.debugfs_forcewake_path, 0); -} - static void release_forcewake_lock(int fd) { @@ -184,16 +147,11 @@ intel_register_access_init(struct pci_device *pci_dev, int safe) /* Find where the forcewake lock is. Forcewake doesn't exist * gen < 6, but the debugfs should do the right things for us. */ - ret = find_debugfs_path("/sys/kernel/debug/dri"); - if (ret) { - ret = find_debugfs_path("/debug/dri"); - if (ret) { - fprintf(stderr, "Couldn't find path to dri/debugfs entry\n"); - fprintf(stderr, "warning: forcewake will not be handled\n"); - } + ret = igt_open_forcewake_handle(); + if (ret == -1) mmio_data.key = FAKEKEY; - } else - mmio_data.key = get_forcewake_lock(); + else + mmio_data.key = ret; mmio_data.inited++; return 0; |