From 68a95f0e389096e7e4d87cd87dbb09edaca9909b Mon Sep 17 00:00:00 2001 From: Chris Wilson Date: Tue, 25 Jan 2011 16:34:08 +0000 Subject: error decode: Search for first i915_error_state Handy for multi-GPU systems where the IGFX may not be first. Signed-off-by: Chris Wilson --- tools/intel_error_decode.c | 42 +++++++++++++++++++++++++++++------------- 1 file changed, 29 insertions(+), 13 deletions(-) (limited to 'tools/intel_error_decode.c') diff --git a/tools/intel_error_decode.c b/tools/intel_error_decode.c index a11c918c..a27ade9b 100644 --- a/tools/intel_error_decode.c +++ b/tools/intel_error_decode.c @@ -344,10 +344,10 @@ main (int argc, char *argv[]) if (argc == 1) { if (isatty(0)) { - path = "/debug/dri/0"; + path = "/debug/dri"; err = stat (path, &st); if (err != 0) { - path = "/sys/kernel/debug/dri/0"; + path = "/sys/kernel/debug/dri"; err = stat (path, &st); if (err != 0) { errx(1, @@ -370,21 +370,37 @@ main (int argc, char *argv[]) } } - if (S_ISDIR (st.st_mode)) + if (S_ISDIR (st.st_mode)) { asprintf (&filename, "%s/i915_error_state", path); - else - filename = (char *) path; - - file = fopen(filename, "r"); - if (file) { - read_data_file (file); - fclose (file); + file = fopen(filename, "r"); + if (!file) { + int minor; + for (minor = 0; minor < 64; minor++) { + free(filename); + asprintf(&filename, "%s/%d/i915_error_state", path, minor); + file = fopen(filename, "r"); + if (file) + break; + } + } + if (!file) { + fprintf (stderr, "Failed to find i915_error_state beneath %s\n", + path); + exit (1); + } } else { - fprintf (stderr, "Failed to open %s: %s\n", - filename, strerror (errno)); - exit (1); + filename = (char *) path; + file = fopen(filename, "r"); + if (!file) { + fprintf (stderr, "Failed to open %s: %s\n", + filename, strerror (errno)); + exit (1); + } } + read_data_file (file); + fclose (file); + if (filename != path) free (filename); -- cgit v1.2.3