[PATCH i-g-t v3 2/5] lib: Add more debug messages to error paths
Janusz Krzysztofik
janusz.krzysztofik at linux.intel.com
Wed Jul 17 12:26:13 UTC 2024
On an attempt to resolve the issue of mysteriously failing updates of
sysfs entries representing engine preempt timeout values, add debug
messages to error paths of involved library functions.
v2: No changes.
v3: Add still more debug messages.
Link: https://gitlab.freedesktop.org/drm/i915/kernel/-/issues/6268
Signed-off-by: Janusz Krzysztofik <janusz.krzysztofik at linux.intel.com>
---
lib/i915/gem_engine_topology.c | 19 +++++++++++--------
lib/igt_sysfs.c | 4 ++--
2 files changed, 13 insertions(+), 10 deletions(-)
diff --git a/lib/i915/gem_engine_topology.c b/lib/i915/gem_engine_topology.c
index afb576afb2..3e9bdf2e0a 100644
--- a/lib/i915/gem_engine_topology.c
+++ b/lib/i915/gem_engine_topology.c
@@ -454,12 +454,12 @@ static int __open_primary(int dir)
int len;
fd = openat(dir, "dev", O_RDONLY);
- if (fd < 0)
+ if (igt_debug_on(fd < 0))
return dir;
len = read(fd, buf, sizeof(buf) - 1);
close(fd);
- if (len <= 0)
+ if (igt_debug_on(len <= 0))
return dir;
buf[len] = '\0';
@@ -467,7 +467,7 @@ static int __open_primary(int dir)
if (minor < 64)
return dir;
- if (readlinkat(dir, "device", target, sizeof(target)) < 0)
+ if (igt_debug_on(readlinkat(dir, "device", target, sizeof(target)) < 0))
return dir;
fd = openat(dir, "..", O_RDONLY);
@@ -500,24 +500,27 @@ static FILE *__open_attr(int dir, const char *mode, ...)
va_list ap;
/* The attributes are not to be found on render nodes */
- dir = __open_primary(dir);
+ igt_debug_on((dir = __open_primary(dir)) < 0);
va_start(ap, mode);
while (dir >= 0 && (path = va_arg(ap, const char *))) {
int fd;
- fd = openat(dir, path, O_RDONLY);
+ igt_debug_on_f((fd = openat(dir, path, O_RDONLY)) < 0,
+ "failed component: %s", path);
close(dir);
dir = fd;
}
va_end(ap);
+ if (dir < 0)
+ return NULL;
if (*mode != 'r') /* clumsy, but fun */
- dir = reopen(dir, O_RDWR);
+ igt_debug_on((dir = reopen(dir, O_RDWR)) < 0);
file = fdopen(dir, mode);
- if (!file) {
+ if (igt_debug_on(!file)) {
close(dir);
return NULL;
}
@@ -554,7 +557,7 @@ int gem_engine_property_printf(int i915, const char *engine, const char *attr,
file = __open_attr(igt_sysfs_open(i915), "w",
"engine", engine, attr, NULL);
- if (!file)
+ if (igt_debug_on(!file))
return -1;
va_start(ap, fmt);
diff --git a/lib/igt_sysfs.c b/lib/igt_sysfs.c
index 42b2af41ab..550472d819 100644
--- a/lib/igt_sysfs.c
+++ b/lib/igt_sysfs.c
@@ -186,7 +186,7 @@ char *igt_sysfs_path(int device, char *path, int pathlen)
snprintf(path, pathlen, "/sys/dev/char/%d:%d",
major(st.st_rdev), minor(st.st_rdev));
- if (access(path, F_OK))
+ if (igt_debug_on(access(path, F_OK)))
return NULL;
return path;
@@ -206,7 +206,7 @@ int igt_sysfs_open(int device)
{
char path[80];
- if (!igt_sysfs_path(device, path, sizeof(path)))
+ if (igt_debug_on(!igt_sysfs_path(device, path, sizeof(path))))
return -1;
return open(path, O_RDONLY);
--
2.45.2
More information about the Intel-gfx
mailing list