[PATCH i-g-t v4 2/5] lib: Add more debug messages to error paths
Janusz Krzysztofik
janusz.krzysztofik at linux.intel.com
Thu Jul 18 08:55: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.
v4: Fix missing line termination.
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..c878e95f08 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\n", 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 igt-dev
mailing list