[PATCH i-g-t 1/3] lib/xe_eudebug: Fix 32b compilation warnings/errors

Dominik Grzegorzek dominik.grzegorzek at intel.com
Wed Jan 22 14:44:17 UTC 2025


Fix instances casting using proper from_user_pointer macro and
correct all debug prints which were causing compilation warnings
on 32b archs.

Signed-off-by: Dominik Grzegorzek <dominik.grzegorzek at intel.com>
Reviewed-by: Kamil Konieczny <kamil.konieczny at linux.intel.com>
---
 lib/xe/xe_eudebug.c | 26 +++++++++++++++-----------
 1 file changed, 15 insertions(+), 11 deletions(-)

diff --git a/lib/xe/xe_eudebug.c b/lib/xe/xe_eudebug.c
index 24062e399..19bec2d25 100644
--- a/lib/xe/xe_eudebug.c
+++ b/lib/xe/xe_eudebug.c
@@ -324,14 +324,14 @@ static uint64_t __wait_token(int pipe[2], const uint64_t token, int timeout_ms)
 
 	ret = safe_pipe_read(pipe, &in, sizeof(in), timeout_ms);
 	igt_assert_f(ret > 0,
-		     "Pipe read timeout waiting for token '%s:(%ld)'\n",
+		     "Pipe read timeout waiting for token '%s:(%" PRId64 ")'\n",
 		     token_to_str(token), token);
 
 	igt_assert_eq(in, token);
 
 	ret = safe_pipe_read(pipe, &in, sizeof(in), timeout_ms);
 	igt_assert_f(ret > 0,
-		     "Pipe read timeout waiting for token value '%s:(%ld)'\n",
+		     "Pipe read timeout waiting for token value '%s:(%" PRId64 ")'\n",
 		     token_to_str(token), token);
 
 	return in;
@@ -828,7 +828,8 @@ xe_eudebug_event_log_find_seqno(struct xe_eudebug_event_log *l, uint64_t seqno)
 	xe_eudebug_for_each_event(e, l) {
 		if (e->seqno == seqno) {
 			if (found) {
-				igt_warn("Found multiple events with the same seqno %lu\n", seqno);
+				igt_warn("Found multiple events with the same seqno %" PRIu64 "\n",
+					 seqno);
 				xe_eudebug_event_log_print(l, false);
 				igt_assert(!found);
 			}
@@ -1238,7 +1239,7 @@ int xe_eudebug_debugger_attach(struct xe_eudebug_debugger *d,
 	d->p_client[0] = c->p_in[0];
 	d->p_client[1] = c->p_in[1];
 
-	igt_debug("debugger connected to %lu\n", d->target_pid);
+	igt_debug("debugger connected to %" PRIu64 "\n", d->target_pid);
 
 	return 0;
 }
@@ -1391,11 +1392,11 @@ void xe_eudebug_debugger_wait_stage(struct xe_eudebug_session *s, uint64_t stage
 {
 	u64 stage_in;
 
-	igt_debug("debugger xe client fd: %d pausing for stage %lu\n", s->debugger->master_fd,
+	igt_debug("debugger xe client fd: %d pausing for stage %" PRIu64 "\n", s->debugger->master_fd,
 		  stage);
 
 	stage_in = wait_from_client(s->client, DEBUGGER_STAGE);
-	igt_debug("debugger xe client fd: %d stage %lu, expected %lu, stage\n",
+	igt_debug("debugger xe client fd: %d stage %" PRIu64 ", expected %" PRIu64 ", stage\n",
 		  s->debugger->master_fd, stage_in, stage);
 
 	igt_assert_eq(stage_in, stage);
@@ -1584,14 +1585,15 @@ void xe_eudebug_client_wait_stage(struct xe_eudebug_client *c, uint64_t stage)
 	u64 stage_in;
 
 	if (c->done) {
-		igt_warn("client: %d already done before %lu\n", c->pid, stage);
+		igt_warn("client: %d already done before %" PRIu64 "\n", c->pid, stage);
 		return;
 	}
 
-	igt_debug("client: %d pausing for stage %lu\n", c->pid, stage);
+	igt_debug("client: %d pausing for stage %" PRIu64 "\n", c->pid, stage);
 
 	stage_in = client_wait_token(c, CLIENT_STAGE);
-	igt_debug("client: %d stage %lu, expected %lu, stage\n", c->pid, stage_in, stage);
+	igt_debug("client: %d stage %" PRIu64 ", expected %" PRIu64 ", stage\n", c->pid,
+		  stage_in, stage);
 
 	igt_assert_eq(stage_in, stage);
 }
@@ -1949,7 +1951,7 @@ uint32_t xe_eudebug_client_exec_queue_create(struct xe_eudebug_client *c, int fd
 	igt_assert(c);
 	igt_assert(create);
 
-	instances = (struct drm_xe_engine_class_instance *)(create->instances);
+	instances = from_user_pointer(create->instances);
 	class = instances[0].engine_class;
 
 	igt_assert_eq(igt_ioctl(fd, DRM_IOCTL_XE_EXEC_QUEUE_CREATE, create), 0);
@@ -1988,6 +1990,7 @@ uint32_t xe_eudebug_client_exec_queue_create(struct xe_eudebug_client *c, int fd
 void xe_eudebug_client_exec_queue_destroy(struct xe_eudebug_client *c, int fd,
 					  struct drm_xe_exec_queue_create *create)
 {
+	struct drm_xe_engine_class_instance *instances;
 	struct drm_xe_exec_queue_destroy destroy = {};
 	struct drm_xe_ext_set_property *ext;
 	bool send = false;
@@ -1997,7 +2000,8 @@ void xe_eudebug_client_exec_queue_destroy(struct xe_eudebug_client *c, int fd,
 	igt_assert(create);
 
 	destroy.exec_queue_id = create->exec_queue_id;
-	class = ((struct drm_xe_engine_class_instance *)(create->instances))[0].engine_class;
+	instances = from_user_pointer(create->instances);
+	class = instances[0].engine_class;
 
 	for (ext = from_user_pointer(create->extensions); ext;
 	     ext = from_user_pointer(ext->base.next_extension))
-- 
2.34.1



More information about the igt-dev mailing list